隨筆-88  評論-77  文章-48  trackbacks-0

          package com.zte.hibernate.dao;

          import java.io.FileInputStream;
          import java.io.FileNotFoundException;
          import java.io.IOException;
          import java.io.InputStream;
          import java.util.Properties;

          import org.hibernate.HibernateException;
          import org.hibernate.Session;
          import org.hibernate.cfg.Configuration;

          import com.zte.hibernate.domain.Dept;
          import com.zte.hibernate.domain.Emp;

          /**
          ?* Configures and provides access to Hibernate sessions, tied to the
          ?* current thread of execution.? Follows the Thread Local Session
          ?* pattern, see {@linkhttp://hibernate.org/42.html}.
          ?*/
          public class HibernateSessionFactory {

          ??? /**
          ???? * Location of hibernate.cfg.xml file.
          ???? * NOTICE: Location should be on the classpath as Hibernate uses
          ???? * #resourceAsStream style lookup for its configuration file. That
          ???? * is place the config file in a Java package - the default location
          ???? * is the default Java package.<br><br>
          ???? * Examples: <br>
          ???? * <code>CONFIG_FILE_LOCATION = "/hibernate.conf.xml".
          ???? * CONFIG_FILE_LOCATION = "/com/foo/bar/myhiberstuff.conf.xml".</code>
          ???? */
          ??? private static String CONFIG_FILE_LOCATION = "/com/zte/hibernate/dao/hibernate.cfg.xml";

          ??? /** Holds a single instance of Session */
          ?private static final ThreadLocal threadLocal = new ThreadLocal();

          ??? /** The single instance of hibernate configuration */
          ??? private static final Configuration cfg = new Configuration();

          ??? /** The single instance of hibernate SessionFactory */
          ??? private static org.hibernate.SessionFactory sessionFactory;

          ??? /**
          ???? * Returns the ThreadLocal Session instance.? Lazy initialize
          ???? * the <code>SessionFactory</code> if needed.
          ???? *
          ???? *? @return Session
          ???? *? @throws HibernateException
          ???? */
          ??? public static Session currentSession() throws HibernateException {
          ??????? Session session = (Session) threadLocal.get();
          ??????? Properties p = new Properties();
          ??????? InputStream in;
          ??try {
          ???in = new FileInputStream("src/hibernate.properties");
          ???p.load(in);
          ??} catch (FileNotFoundException e1) {
          ???// TODO Auto-generated catch block
          ???e1.printStackTrace();
          ??} catch (IOException e) {
          ???// TODO Auto-generated catch block
          ???e.printStackTrace();
          ??}
          ???????
          ??if (session == null || !session.isOpen()) {
          ???if (sessionFactory == null) {
          ????try {
          ?????cfg.setProperties(p);
          ?????cfg.addClass(Dept.class);
          ?????cfg.addClass(Emp.class);
          ?????//cfg.configure(CONFIG_FILE_LOCATION);
          ?????sessionFactory = cfg.buildSessionFactory();
          ????} catch (Exception e) {
          ?????System.err
          ???????.println("%%%% Error Creating SessionFactory %%%%");
          ?????e.printStackTrace();
          ????}
          ???}
          ???session = (sessionFactory != null) ? sessionFactory.openSession()
          ?????: null;
          ???threadLocal.set(session);
          ??}

          ??????? return session;
          ??? }

          ??? /**
          ???? *? Close the single hibernate session instance.
          ???? *
          ???? *? @throws HibernateException
          ???? */
          ??? public static void closeSession() throws HibernateException {
          ??????? Session session = (Session) threadLocal.get();
          ??????? threadLocal.set(null);

          ??????? if (session != null) {
          ??????????? session.close();
          ??????? }
          ??? }

          ??? /**
          ???? * Default constructor.
          ???? */
          ??? private HibernateSessionFactory() {
          ??? }

          }

          posted on 2006-05-18 16:50 崛起的程序員 閱讀(682) 評論(0)  編輯  收藏 所屬分類: java
          主站蜘蛛池模板: 资兴市| 天全县| 余庆县| 浑源县| 抚松县| 通榆县| 兴义市| 山阳县| 方正县| 大石桥市| 宣汉县| 沧源| 垣曲县| 鸡东县| 广平县| 基隆市| 长海县| 盘山县| 五家渠市| 鹿泉市| 宜川县| 博湖县| 鹤庆县| 台江县| 石首市| 闽清县| 吉木乃县| 云浮市| 建昌县| 泌阳县| 天镇县| 北海市| 长治市| 利川市| 什邡市| 洛扎县| 韩城市| 淳化县| 纳雍县| 元阳县| 策勒县|