Source code: com/ibatis/dao/client/template/HibernateDaoTemplate.java
1 /*
2 * Copyright 2004 Clinton Begin
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16 package com.ibatis.dao.client.template;
17
18 import com.ibatis.dao.client.DaoException;
19 import com.ibatis.dao.client.DaoManager;
20 import com.ibatis.dao.engine.transaction.hibernate.HibernateDaoTransaction;
21 import net.sf.hibernate.*;
22 import net.sf.hibernate.type.Type;
23
24 import java.io.Serializable;
25 import java.sql.Connection;
26 import java.util.Collection;
27 import java.util.Iterator;
28 import java.util.List;
29
30 /**
31 * A DaoTemplate for Hibernate implementations that provides a
32 * convenient method to access the Hibernate Session.
33 */
34 public abstract class HibernateDaoTemplate extends DaoTemplate {
35
36 /**
37 * The DaoManager that manages this Dao instance will be passed
38 * in as the parameter to this constructor automatically upon
39 * instantiation.
40 *
41 * @param daoManager
42 */
43 public HibernateDaoTemplate(DaoManager daoManager) {
44 super(daoManager);
45 }
46
47 /**
48 * Gets the Hibernate session associated with the current
49 * DaoTransaction that this Dao is working under.
50 *
51 * @return A Hibernate Session instance.
52 */
53 protected Session getSession() {
54 HibernateDaoTransaction trans = (HibernateDaoTransaction) daoManager.getTransaction(this);
55 return trans.getSession();
56 }
57
58 public void flush() {
59 try {
60 getSession().flush();
61 } catch (HibernateException e) {
62 throw new DaoException("Error occurred in a Hibernate DAO. Cause: " + e, e);
63 }
64 }
65
66 public void setFlushMode(FlushMode flushMode) {
67 getSession().setFlushMode(flushMode);
68 }
69
70 public FlushMode getFlushMode() {
71 return getSession().getFlushMode();
72 }
73
74 public SessionFactory getSessionFactory() {
75 return getSession().getSessionFactory();
76 }
77
78 public Connection connection() {
79 try {
80 return getSession().connection();
81 } catch (HibernateException e) {
82 throw new DaoException("Error occurred in a Hibernate DAO. Cause: " + e, e);
83 }
84 }
85
86 public Connection disconnect() {
87 try {
88 return getSession().disconnect();
89 } catch (HibernateException e) {
90 throw new DaoException("Error occurred in a Hibernate DAO. Cause: " + e, e);
91 }
92 }
93
94 public void reconnect() {
95 try {
96 getSession().reconnect();
97 } catch (HibernateException e) {
98 throw new DaoException("Error occurred in a Hibernate DAO. Cause: " + e, e);
99 }
100 }
101
102 public void reconnect(Connection connection) {
103 try {
104 getSession().reconnect(connection);
105 } catch (HibernateException e) {
106 throw new DaoException(e);
107 }
108 }
109
110 public Connection close() {
111 try {
112 return getSession().close();
113 } catch (HibernateException e) {
114 throw new DaoException("Error occurred in a Hibernate DAO. Cause: " + e, e);
115 }
116 }
117
118 public void cancelQuery() {
119 try {
120 getSession().cancelQuery();
121 } catch (HibernateException e) {
122 throw new DaoException("Error occurred in a Hibernate DAO. Cause: " + e, e);
123 }
124 }
125
126 public boolean isOpen() {
127 return getSession().isOpen();
128 }
129
130 public boolean isConnected() {
131 return getSession().isConnected();
132 }
133
134 public boolean isDirty() {
135 try {
136 return getSession().isDirty();
137 } catch (HibernateException e) {
138 throw new DaoException("Error occurred in a Hibernate DAO. Cause: " + e, e);
139 }
140 }
141
142 public Serializable getIdentifier(Object o) {
143 try {
144 return getSession().getIdentifier(o);
145 } catch (HibernateException e) {
146 throw new DaoException("Error occurred in a Hibernate DAO. Cause: " + e, e);
147 }
148 }
149
150 public boolean contains(Object o) {
151 return getSession().contains(o);
152 }
153
154 public void evict(Object o) {
155 try {
156 getSession().evict(o);
157 } catch (HibernateException e) {
158 throw new DaoException("Error occurred in a Hibernate DAO. Cause: " + e, e);
159 }
160 }
161
162 public Object load(Class aClass, Serializable serializable, LockMode lockMode) {
163 try {
164 return getSession().load(aClass, serializable, lockMode);
165 } catch (HibernateException e) {
166 throw new DaoException("Error occurred in a Hibernate DAO. Cause: " + e, e);
167 }
168 }
169
170 public Object load(Class aClass, Serializable serializable) {
171 try {
172 return getSession().load(aClass, serializable);
173 } catch (HibernateException e) {
174 throw new DaoException("Error occurred in a Hibernate DAO. Cause: " + e, e);
175 }
176 }
177
178 public void load(Object o, Serializable serializable) {
179 try {
180 getSession().load(o, serializable);
181 } catch (HibernateException e) {
182 throw new DaoException("Error occurred in a Hibernate DAO. Cause: " + e, e);
183 }
184 }
185
186 public void replicate(Object o, ReplicationMode replicationMode) {
187 try {
188 getSession().replicate(o, replicationMode);
189 } catch (HibernateException e) {
190 throw new DaoException("Error occurred in a Hibernate DAO. Cause: " + e, e);
191 }
192 }
193
194 public Serializable save(Object o) {
195 try {
196 return getSession().save(o);
197 } catch (HibernateException e) {
198 throw new DaoException("Error occurred in a Hibernate DAO. Cause: " + e, e);
199 }
200 }
201
202 public void save(Object o, Serializable serializable) {
203 try {
204 getSession().save(o, serializable);
205 } catch (HibernateException e) {
206 throw new DaoException("Error occurred in a Hibernate DAO. Cause: " + e, e);
207 }
208 }
209
210 public void saveOrUpdate(Object o) {
211 try {
212 getSession().save(o);
213 } catch (HibernateException e) {
214 throw new DaoException("Error occurred in a Hibernate DAO. Cause: " + e, e);
215 }
216 }
217
218 public void update(Object o) {
219 try {
220 getSession().update(o);
221 } catch (HibernateException e) {
222 throw new DaoException("Error occurred in a Hibernate DAO. Cause: " + e, e);
223 }
224 }
225
226 public void update(Object o, Serializable serializable) {
227 try {
228 getSession().update(o, serializable);
229 } catch (HibernateException e) {
230 throw new DaoException("Error occurred in a Hibernate DAO. Cause: " + e, e);
231 }
232 }
233
234 public Object saveOrUpdateCopy(Object o) {
235 try {
236 return getSession().saveOrUpdateCopy(o);
237 } catch (HibernateException e) {
238 throw new DaoException("Error occurred in a Hibernate DAO. Cause: " + e, e);
239 }
240 }
241
242 public Object saveOrUpdateCopy(Object o, Serializable serializable) {
243 try {
244 return getSession().saveOrUpdateCopy(o, serializable);
245 } catch (HibernateException e) {
246 throw new DaoException("Error occurred in a Hibernate DAO. Cause: " + e, e);
247 }
248 }
249
250 public void delete(Object o) {
251 try {
252 getSession().delete(o);
253 } catch (HibernateException e) {
254 throw new DaoException("Error occurred in a Hibernate DAO. Cause: " + e, e);
255 }
256 }
257
258 public List find(String s) {
259 try {
260 return getSession().find(s);
261 } catch (HibernateException e) {
262 throw new DaoException("Error occurred in a Hibernate DAO. Cause: " + e, e);
263 }
264 }
265
266 public List find(String s, Object o, Type type) {
267 try {
268 return getSession().find(s, o, type);
269 } catch (HibernateException e) {
270 throw new DaoException("Error occurred in a Hibernate DAO. Cause: " + e, e);
271 }
272 }
273
274 public List find(String s, Object[] objects, Type[] types) {
275 try {
276 return getSession().find(s, objects, types);
277 } catch (HibernateException e) {
278 throw new DaoException("Error occurred in a Hibernate DAO. Cause: " + e, e);
279 }
280 }
281
282 public Iterator iterate(String s) {
283 try {
284 return getSession().iterate(s);
285 } catch (HibernateException e) {
286 throw new DaoException("Error occurred in a Hibernate DAO. Cause: " + e, e);
287 }
288 }
289
290 public Iterator iterate(String s, Object o, Type type) {
291 try {
292 return getSession().iterate(s, o, type);
293 } catch (HibernateException e) {
294 throw new DaoException("Error occurred in a Hibernate DAO. Cause: " + e, e);
295 }
296 }
297
298 public Iterator iterate(String s, Object[] objects, Type[] types) {
299 try {
300 return getSession().iterate(s, objects, types);
301 } catch (HibernateException e) {
302 throw new DaoException("Error occurred in a Hibernate DAO. Cause: " + e, e);
303 }
304 }
305
306 public Collection filter(Object o, String s) {
307 try {
308 return getSession().filter(o, s);
309 } catch (HibernateException e) {
310 throw new DaoException("Error occurred in a Hibernate DAO. Cause: " + e, e);
311 }
312 }
313
314 public Collection filter(Object o, String s, Object o1, Type type) {
315 try {
316 return getSession().filter(o, s, o1, type);
317 } catch (HibernateException e) {
318 throw new DaoException("Error occurred in a Hibernate DAO. Cause: " + e, e);
319 }
320 }
321
322 public Collection filter(Object o, String s, Object[] objects, Type[] types) {
323 try {
324 return getSession().filter(o, s, objects, types);
325 } catch (HibernateException e) {
326 throw new DaoException("Error occurred in a Hibernate DAO. Cause: " + e, e);
327 }
328 }
329
330 public int delete(String s) {
331 try {
332 return getSession().delete(s);
333 } catch (HibernateException e) {
334 throw new DaoException("Error occurred in a Hibernate DAO. Cause: " + e, e);
335 }
336 }
337
338 public int delete(String s, Object o, Type type) {
339 try {
340 return getSession().delete(s, o, type);
341 } catch (HibernateException e) {
342 throw new DaoException("Error occurred in a Hibernate DAO. Cause: " + e, e);
343 }
344 }
345
346 public int delete(String s, Object[] objects, Type[] types) {
347 try {
348 return getSession().delete(s, objects, types);
349 } catch (HibernateException e) {
350 throw new DaoException("Error occurred in a Hibernate DAO. Cause: " + e, e);
351 }
352 }
353
354 public void lock(Object o, LockMode lockMode) {
355 try {
356 getSession().lock(o, lockMode);
357 } catch (HibernateException e) {
358 throw new DaoException("Error occurred in a Hibernate DAO. Cause: " + e, e);
359 }
360 }
361
362 public void refresh(Object o) {
363 try {
364 getSession().refresh(o);
365 } catch (HibernateException e) {
366 throw new DaoException("Error occurred in a Hibernate DAO. Cause: " + e, e);
367 }
368 }
369
370 public void refresh(Object o, LockMode lockMode) {
371 try {
372 getSession().refresh(o, lockMode);
373 } catch (HibernateException e) {
374 throw new DaoException("Error occurred in a Hibernate DAO. Cause: " + e, e);
375 }
376 }
377
378 public LockMode getCurrentLockMode(Object o) {
379 try {
380 return getSession().getCurrentLockMode(o);
381 } catch (HibernateException e) {
382 throw new DaoException("Error occurred in a Hibernate DAO. Cause: " + e, e);
383 }
384 }
385
386 public Transaction beginTransaction() {
387 try {
388 return getSession().beginTransaction();
389 } catch (HibernateException e) {
390 throw new DaoException("Error occurred in a Hibernate DAO. Cause: " + e, e);
391 }
392 }
393
394 public Criteria createCriteria(Class aClass) {
395 return getSession().createCriteria(aClass);
396 }
397
398 public Query createQuery(String s) {
399 try {
400 return getSession().createQuery(s);
401 } catch (HibernateException e) {
402 throw new DaoException("Error occurred in a Hibernate DAO. Cause: " + e, e);
403 }
404 }
405
406 public Query createFilter(Object o, String s) {
407 try {
408 return getSession().createFilter(o, s);
409 } catch (HibernateException e) {
410 throw new DaoException("Error occurred in a Hibernate DAO. Cause: " + e, e);
411 }
412 }
413
414 public Query getNamedQuery(String s) {
415 try {
416 return getSession().getNamedQuery(s);
417 } catch (HibernateException e) {
418 throw new DaoException("Error occurred in a Hibernate DAO. Cause: " + e, e);
419 }
420 }
421
422 public Query createSQLQuery(String s, String s1, Class aClass) {
423 return getSession().createSQLQuery(s, s1, aClass);
424 }
425
426 public Query createSQLQuery(String s, String[] strings, Class[] classes) {
427 return getSession().createSQLQuery(s, strings, classes);
428 }
429
430 public void clear() {
431 getSession().clear();
432 }
433
434 public Object get(Class aClass, Serializable serializable) {
435 try {
436 return getSession().get(aClass, serializable);
437 } catch (HibernateException e) {
438 throw new DaoException("Error occurred in a Hibernate DAO. Cause: " + e, e);
439 }
440 }
441
442 public Object get(Class aClass, Serializable serializable, LockMode lockMode) {
443 try {
444 return getSession().get(aClass, serializable, lockMode);
445 } catch (HibernateException e) {
446 throw new DaoException("Error occurred in a Hibernate DAO. Cause: " + e, e);
447 }
448 }
449
450 }