Hi, I am using Spring,Hibernate and Tapestry to save and also fetch data simultaneously from mysql database.I am facing a problem,whenever i refresh the number of data saved and fetched is repeated all the time.Please give me a solution to get data only once without repetation,or Detete table after data is fetched.
Here is UserManagerImpl code: package tuto.webssh.service.impl;
import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import tuto.webssh.domain.dao.UserDao; import tuto.webssh.domain.model.Info; import tuto.webssh.service.UserManager;
public class UserManagerImpl implements UserManager {
private final Log logger = LogFactory.getLog(UserManagerImpl.class); private UserDao userDao = null; /** * setter to allows spring to inject userDao implementation * @param userDao : object (implementation of UserDao interface) to inject. */ public void setUserDao(UserDao userDao) { this.userDao = userDao; } public void getSave(Info info) { userDao.getSave(info); } public List<Info> toRetrieve() { return userDao.getRetrieve();
} }
Here is class to Fetch data: package tuto.webssh.web.pages;
import java.util.List; import tuto.webssh.domain.model.Info; import tuto.webssh.service.UserManager; import org.apache.tapestry.annotations.Inject; import org.apache.tapestry.annotations.Persist; import org.apache.tapestry.annotations.Service;
public class Fetch { @Inject @Service("userManager") private UserManager userManager;
@Persist private List<Info> info; public List<Info> getInfo() { fetch(); return info; } public void setInfo(List info) { this.info = info; } public void fetch() { String str="fetched data"; List<Info> tempInfo = userManager.toRetrieve(); info=tempInfo; }
}
Here is UserDaoImpl code: package tuto.webssh.domain.dao.hibernate3; import java.util.List;
import tuto.webssh.domain.model.Info; import tuto.webssh.domain.dao.UserDao; import org.hibernate.Session; import org.hibernate.Criteria; import org.hibernate.Transaction; import org.springframework.dao.DataAccessException; import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
public class UserDaoImpl extends HibernateDaoSupport implements UserDao {
public UserDaoImpl() { // TODO Auto-generated constructor stub } public void getSave(Info info) { try{ Session sess = getHibernateTemplate().getSessionFactory().getCurrentSession(); Transaction tx = sess.beginTransaction(); sess.save(info); tx.commit(); }
catch(DataAccessException e) { e.printStackTrace(); }
} public List<Info> getRetrieve(){
Session session = getHibernateTemplate().getSessionFactory().getCurrentSession(); session.beginTransaction(); Criteria crit = session.createCriteria(Info.class); List<Info> info=crit.list(); return info; }
}
Here is class for Table(Info) in MySQL database with database name Json: package tuto.webssh.domain.model;
// Generated Feb 23, 2011 5:19:45 PM by Hibernate Tools 3.4.0.CR1
import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import static javax.persistence.GenerationType.IDENTITY; import javax.persistence.Id; import javax.persistence.Table;
/** * Info generated by hbm2java */ @Entity @Table(name = "info", catalog = "json") public class Info implements java.io.Serializable {
private Integer id; private String names; private String images; private String heading; private String type; public Info() { } public Info(String names, String images, String heading, String type) { this.names = names; this.images = images; this.heading = heading; this.type = type; } @Id @GeneratedValue(strategy = IDENTITY) @Column(name = "id", unique = true, nullable = false) public Integer getId() { return this.id; } public void setId(Integer id) { this.id = id; } @Column(name = "names", nullable = false, length = 25) public String getNames() { return this.names; } public void setNames(String names) { this.names = names; } @Column(name = "images", nullable = false, length = 25) public String getImages() { return this.images; } public void setImages(String images) { this.images = images; } @Column(name = "heading", nullable = false, length = 25) public String getHeading() { return this.heading; } public void setHeading(String heading) { this.heading = heading; } @Column(name = "type", nullable = false, length = 25) public String getType() { return this.type; } public void setType(String type) { this.type = type; } }
This fetch and save is called by index.java and index.html pages to display.
Thank you, With regards, Yuvaraj.