1 package org.itracker.persistence.dao;
2
3 import org.hibernate.HibernateException;
4 import org.itracker.model.Entity;
5 import org.springframework.dao.InvalidDataAccessResourceUsageException;
6 import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
7
8 import java.util.Date;
9
10
11
12
13
14
15 public abstract class BaseHibernateDAOImpl<T extends Entity> extends HibernateDaoSupport
16 implements BaseDAO<T> {
17
18
19
20
21 public BaseHibernateDAOImpl() {
22 super();
23 }
24
25
26
27
28
29
30
31 public void save(T entity) {
32 if (null == entity) {
33 throw new InvalidDataAccessResourceUsageException("entity must not be null");
34 }
35 try {
36 Date createDate = new Date();
37 entity.setCreateDate(createDate);
38 entity.setLastModifiedDate(createDate);
39 getSession().save(entity);
40 } catch (HibernateException ex) {
41 logger.debug("save: caught HibernateException, call to convertHibernateException", ex);
42 throw convertHibernateAccessException(ex);
43 }
44 }
45
46
47
48
49
50
51
52 public void saveOrUpdate(T entity) {
53 if (null == entity) {
54 throw new InvalidDataAccessResourceUsageException("entity must not be null");
55 }
56
57 try {
58 if (null == entity.getCreateDate()) {
59 entity.setCreateDate(new Date());
60 entity.setLastModifiedDate(entity.getCreateDate());
61 } else {
62 entity.setLastModifiedDate(new Date());
63 }
64 getSession().saveOrUpdate(entity);
65 } catch (HibernateException ex) {
66 logger.debug("saveOrUpdate: caught HibernateException, call to convertHibernateException", ex);
67 throw convertHibernateAccessException(ex);
68 }
69 }
70
71 public void delete(T entity) {
72 if (null == entity) {
73 throw new InvalidDataAccessResourceUsageException("entity must not be null");
74 }
75 try {
76 getSession().delete(entity);
77 getSession().flush();
78 } catch (HibernateException ex) {
79 logger.debug("delete: caught HibernateException, call to convertHibernateException", ex);
80 throw convertHibernateAccessException(ex);
81 }
82 }
83
84 public void detach(T entity) {
85 if (null == entity) {
86 throw new InvalidDataAccessResourceUsageException("entity must not be null");
87 }
88 try {
89 getSession().evict(entity);
90 } catch (HibernateException ex) {
91 logger.debug("detach: caught HibernateException, call to convertHibernateException", ex);
92 throw convertHibernateAccessException(ex);
93 }
94 }
95
96 public void refresh(T entity) {
97 if (null == entity) {
98 throw new InvalidDataAccessResourceUsageException("entity must not be null");
99 }
100 try {
101 getSession().refresh(entity);
102 } catch (HibernateException ex) {
103 logger.debug("refresh: caught HibernateException, call to convertHibernateException", ex);
104 throw convertHibernateAccessException(ex);
105 }
106 }
107
108 @SuppressWarnings("unchecked")
109 public T merge(T entity) {
110 if (null == entity) {
111 throw new InvalidDataAccessResourceUsageException("entity must not be null");
112 }
113 try {
114 return (T) getSession().merge(entity);
115 } catch (HibernateException ex) {
116 logger.debug("merge: caught HibernateException, call to convertHibernateException", ex);
117 throw convertHibernateAccessException(ex);
118 }
119 }
120 }