hibernate4.2.0的HibernateSessionFactory()函数

来源:互联网 发布:上海行知中学对口小学 编辑:程序博客网 时间:2024/05/22 01:31

因为hibernate4放弃了buildSessionFactory()方法,所以getSession()需要重新修改一下,具体代码如下


package com.ssh.pwq.hibernate;import org.hibernate.HibernateException;import org.hibernate.Session;import org.hibernate.cfg.Configuration;import org.hibernate.service.ServiceRegistry;import org.hibernate.service.ServiceRegistryBuilder;@SuppressWarnings("deprecation")public class HibernateSessionFactory {private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";//指定配置文件路径private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();//定义ThreadLocal对象private  static Configuration configuration = new Configuration();//定义Configuration对象private static org.hibernate.SessionFactory sessionFactory;//定义SessionFactory对象private static String configFile = CONFIG_FILE_LOCATION;static {try {configuration.configure(configFile);//读取配置文件ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();sessionFactory = configuration.buildSessionFactory(serviceRegistry);//根据配置文件创建SessionFactory对象} catch (Exception e) {System.err.println("%%%% Error Creating SessionFactory %%%%");e.printStackTrace();}}private HibernateSessionFactory() {}public static Session getSession() throws HibernateException {Session session = (Session) threadLocal.get();//从ThreadLocal对象中获得Session对象if (session == null || !session.isOpen()) {if (sessionFactory == null) {rebuildSessionFactory();}//如果SessionFactory对象不为空,则调用其openSession方法创建Session对象session = (sessionFactory != null) ? sessionFactory.openSession(): null;threadLocal.set(session);//在ThreadLocal对象中保存该Session对象}return session;}public static void rebuildSessionFactory() {try {configuration.configure(configFile);//读取配置文件ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();sessionFactory = configuration.buildSessionFactory(serviceRegistry);} catch (Exception e) {System.err.println("%%%% Error Recreating SessionFactory %%%%");e.printStackTrace();}}public static void closeSession() throws HibernateException {Session session = (Session) threadLocal.get();//从ThreadLocal对象中获得Session对象threadLocal.set(null);//将当前线程Session对象从ThreadLocal对象中移除if (session != null) {session.close();}}public static org.hibernate.SessionFactory getSessionFactory() {//取得SessionFactory对象return sessionFactory;}public static void setConfigFile(String configFile) {//设置新的配置文件HibernateSessionFactory.configFile = configFile;sessionFactory = null;}public static Configuration getConfiguration() {//获得Configuration对象return configuration;}}


0 0
原创粉丝点击