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.