1 package com.panogenesis.dao.hibernate;
2
3 import java.io.Serializable;
4 import java.util.List;
5
6 import org.apache.commons.logging.Log;
7 import org.apache.commons.logging.LogFactory;
8 import com.panogenesis.dao.DAO;
9 import org.springframework.orm.ObjectRetrievalFailureException;
10 import org.springframework.orm.hibernate.support.HibernateDaoSupport;
11
12 /***
13 * This class serves as the Base class for all other DAOs - namely to hold
14 * common methods that they might all use. Can be used for standard CRUD
15 * operations.</p>
16 *
17 * <p><a href="BaseDAOHibernate.java.html"><i>View Source</i></a></p>
18 *
19 * @author <a href="mailto:matt@raibledesigns.com">Matt Raible</a>
20 */
21 public class BaseDAOHibernate extends HibernateDaoSupport implements DAO {
22 protected final Log log = LogFactory.getLog(getClass());
23
24 /***
25 * @see com.panogenesis.dao.DAO#saveObject(java.lang.Object)
26 */
27 public void saveObject(Object o) {
28 getHibernateTemplate().saveOrUpdate(o);
29 }
30
31 /***
32 * @see com.panogenesis.dao.DAO#getObject(java.lang.Class, java.io.Serializable)
33 */
34 public Object getObject(Class clazz, Serializable id) {
35 Object o = getHibernateTemplate().get(clazz, id);
36
37 if (o == null) {
38 throw new ObjectRetrievalFailureException(clazz, id);
39 }
40
41 return o;
42 }
43
44 /***
45 * @see com.panogenesis.dao.DAO#getObjects(java.lang.Class)
46 */
47 public List getObjects(Class clazz) {
48 return getHibernateTemplate().loadAll(clazz);
49 }
50
51 /***
52 * @see com.panogenesis.dao.DAO#removeObject(java.lang.Class, java.io.Serializable)
53 */
54 public void removeObject(Class clazz, Serializable id) {
55 getHibernateTemplate().delete(getObject(clazz, id));
56 }
57 }