隨筆-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 崛起的程序員 閱讀(687) 評論(0)  編輯  收藏 所屬分類: java
          主站蜘蛛池模板: 桓仁| 祥云县| 龙门县| 景东| 岳池县| 太仆寺旗| 呼伦贝尔市| 乡宁县| 开远市| 香港| 大新县| 麦盖提县| 婺源县| 微山县| 鹤山市| 尉氏县| 赣州市| 渝中区| 清新县| 江西省| 曲周县| 库车县| 崇阳县| 怀化市| 闸北区| 德惠市| 革吉县| 石城县| 久治县| 余江县| 侯马市| 团风县| 革吉县| 肇源县| 蒙自县| 辽阳市| 海林市| 保康县| 安阳市| 邵阳县| 祁阳县|