/home/mario/oci/jnb/dataaccess/source/src/java/com/ociweb/service/SessionFactoryImpl.java
|
1 /**
2 * This software program, Simple Data Access Layer (SDAL), is copyrighted by Object
3 * Computing inc of St. Louis MO USA. It is provided under the open-source model
4 * and is free of license fees. You are free to modify this code for your own use
5 * but you may not claim copyright.
6 *
7 * Since SDAL is open source and free of licensing fees, you are free to use,
8 * modify, and distribute the source code, as long as you include this copyright
9 * statement.
10 *
11 * In particular, you can use SDAL to build proprietary software and are under no
12 * obligation to redistribute any of your source code that is built using SDAL.
13 * Note, however, that you may not do anything to the SDAL code, such as
14 * copyrighting it yourself or claiming authorship of the SDAL code, that will
15 * prevent SDAL from being distributed freely using an open source development
16 * model.
17 *
18 * Warranty
19 * LICENSED PRODUCT, SDAL, IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
20 * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE,
21 * NONINFRINGEMENT, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
22 *
23 * Support
24 * LICENSED PRODUCT, SDAL, IS PROVIDED WITH NO SUPPORT AND WITHOUT ANY OBLIGATION ON THE
25 * PART OF OCI OR ANY OF ITS SUBSIDIARIES OR AFFILIATES TO ASSIST IN ITS USE,
26 * CORRECTION, MODIFICATION OR ENHANCEMENT.
27 *
28 * Support may be available from OCI to users who have agreed to a support
29 * contract.
30 *
31 * Liability
32 * OCI OR ANY OF ITS SUBSIDIARIES OR AFFILIATES SHALL HAVE NO LIABILITY WITH
33 * RESPECT TO THE INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY
34 * LICENSED PRODUCT OR ANY PART THEREOF.
35 *
36 * IN NO EVENT WILL OCI OR ANY OF ITS SUBSIDIARIES OR AFFILIATES BE LIABLE FOR ANY
37 * LOST REVENUE OR PROFITS OR OTHER SPECIAL, INDIRECT AND CONSEQUENTIAL DAMAGES,
38 * EVEN IF OCI HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
39 *
40 * Copyright OCI. St. Louis MO USA, 2004
41 *
42 */
43 package com.ociweb.service;
44
45 import net.sf.hibernate.Session;
46 import net.sf.hibernate.HibernateException;
47 import net.sf.hibernate.cfg.Configuration;
48
49 import com.ociweb.util.GlobalPropertyManager;
50 import com.ociweb.service.SessionException;
51 import com.ociweb.service.SessionFactory;
52
53 class SessionFactoryImpl implements SessionFactory {
54 private net.sf.hibernate.SessionFactory factory;
55 private static final String HIBERNATE_CONFIG_FILE = "hibernate.config_file";
56
57 public Session newSession() throws SessionException {
58 try {
59 return getSessionFactory().openSession();
60 } catch (HibernateException e) {
61 throw new SessionException("Unable to open new session", e);
62 }
63 }
64
65 private net.sf.hibernate.SessionFactory getSessionFactory() throws SessionException {
66 if (factory == null) {
67 Configuration configuration = new Configuration();
68 try {
69 String hibernateConfigFile = GlobalPropertyManager.get().getPropertyValue(HIBERNATE_CONFIG_FILE);
70 configuration.configure(hibernateConfigFile);
71 factory = configuration.buildSessionFactory();
72 } catch (Throwable e) {
73 throw new SessionException("Unable to configure a new SessionFactory", e);
74 }
75 }
76 return factory;
77 }
78 }
79