View Javadoc

1   /**
2    * 
3    */
4   package ar.com.jiji.kaya.dao.hib;
5   
6   import java.util.List;
7   
8   import org.apache.commons.logging.Log;
9   import org.apache.commons.logging.LogFactory;
10  import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
11  
12  import ar.com.jiji.kaya.dao.CRUDDAO;
13  
14  /**
15   * Implementacion para Hibernate 3 y Spring de AbstractDAO
16   * 
17   * @author lparra
18   * @version $Revision$ $Date$
19   */
20  public class HibernateCRUDImpl<T> implements CRUDDAO<T> {
21  
22  	private static final Log log = LogFactory.getLog(HibernateCRUDImpl.class);
23  
24  	private HibernateDaoSupport dao;
25  
26  	private Class clazz;
27  
28  	public HibernateCRUDImpl(HibernateDaoSupport dao, Class clazz) {
29  		this.dao = dao;
30  		this.clazz = clazz;
31  	}
32  
33  	@SuppressWarnings("unchecked")
34  	public List<T> getAll() {
35  		log.debug("loading all");
36  		return dao.getHibernateTemplate().loadAll(clazz);
37  	}
38  
39  	@SuppressWarnings("unchecked")
40  	public T load(long id) {
41  		log.debug("loading " + id);
42  		T obj = (T) dao.getHibernateTemplate().get(clazz, id);
43  		if (obj == null)
44  			log.warn("object not found loading " + id);
45  		return obj;
46  
47  	}
48  
49  	public void remove(long id) {
50  		log.debug("removing " + id);
51  		// TODO: estaria bien que haga el delete asi? creo que si
52  		Object o = dao.getHibernateTemplate().get(clazz, id);
53  		if (o != null) {
54  			dao.getHibernateTemplate().delete(o);
55  			log.info("instance deleted from client with id " + id);
56  		} else
57  			log.debug("deleting inexistent object with id " + id);
58  	}
59  
60  	public void save(T obj) {
61  		log.debug("saving " + obj);
62  		dao.getHibernateTemplate().saveOrUpdate(obj);
63  	}
64  
65  }