1 /***
2 * JFoxSOAF, Service-Oriented Application Framework
3 *
4 * Copyright (C) www.huihoo.org
5 *
6 * Distributable under GNU LGPL
7 *
8 * For more information, please visit: http://www.huihoo.org/jfox/jfoxsoaf
9 */
10
11 package org.huihoo.jfox.soaf.services.persistence;
12
13 import net.sf.hibernate.HibernateException;
14 import net.sf.hibernate.Session;
15 import net.sf.hibernate.SessionFactory;
16 import net.sf.hibernate.cfg.Configuration;
17
18 import org.huihoo.jfox.soaf.services.logging.LoggingService;
19
20 /***
21 * <p>
22 * Hibernate persistence service implementation.
23 * </p>
24 *
25 * @author <a href="mailto:founder_chen@yahoo.com.cn">Peter Cheng </a>
26 * @version $Revision: 1.3 $ $Date: 2004/10/20 14:22:06 $
27 * @version Revision: 1.0
28 */
29
30 public class HibernateServiceImpl implements HibernateService {
31
32 private LoggingService loggingService;
33
34 private Configuration config;
35
36 private SessionFactory sessionFactory;
37
38 /***
39 * @param loggingService
40 */
41 public HibernateServiceImpl(LoggingService loggingService)
42 throws HibernateException {
43 this.loggingService = loggingService;
44 config = new Configuration();
45 config.configure(getClass().getClassLoader().getResource(
46 "hibernate.cfg.xml"));
47 }
48
49 /***
50 * @see org.huihoo.jfox.soaf.services.persistence.HibernateService#openSession()
51 */
52 public Session openSession() throws HibernateException {
53 SessionFactory factory = getSessionFactory();
54 Session session = factory.openSession();
55 return session;
56 }
57
58 /***
59 * @see org.huihoo.jfox.soaf.services.persistence.HibernateService#getConfiguration()
60 */
61 public Configuration getConfiguration() throws HibernateException {
62 return config;
63 }
64
65 /***
66 * @see org.huihoo.jfox.soaf.services.persistence.HibernateService#getSessionFactory()
67 */
68 public SessionFactory getSessionFactory() throws HibernateException {
69 if (sessionFactory == null) {
70 synchronized (this) {
71 try {
72 sessionFactory = config.buildSessionFactory();
73 } catch (Throwable t) {
74 if (loggingService.isInfoEnabled()) {
75 loggingService.info("Could not configure hibernate ");
76 }
77 t.printStackTrace();
78 }
79 }
80 }
81 return sessionFactory;
82 }
83
84 }