HibernateSessionFactory
来源:互联网 发布:linux排序命令 编辑:程序博客网 时间:2024/05/21 23:50
package com.hibernate;import java.sql.SQLException;import org.hibernate.HibernateException;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;/** * Configures and provides access to Hibernate sessions, tied to the * current thread of execution. Follows the Thread Local Session * pattern, see {@link http://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> * Defaults: <br> * <code>CONFIG_FILE_LOCATION = "/hibernate.conf.xml"</code> * You can change location with setConfigFile method * session will be rebuilded after change of config file */ private static String CONFIG_FILE_LOCATION = "/com/hibernate/hibernate.cfg.xml";private static final ThreadLocal threadLocal = new ThreadLocal(); private static Configuration configuration = new Configuration(); private static SessionFactory sessionFactory; private static String configFile = CONFIG_FILE_LOCATION; private HibernateSessionFactory() { }/** * Returns the ThreadLocal Session instance. Lazy initialize * the <code>SessionFactory</code> if needed. * * @return Session * @throws HibernateException */ public static Session getCurrentSession() throws HibernateException { Session session = (Session) threadLocal.get();try {if (session == null || !session.isOpen()|| session.connection().isClosed()) {if (sessionFactory == null) {rebuildSessionFactory();}session = (sessionFactory != null) ? sessionFactory.openSession(): null;threadLocal.set(session);}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();} return session; }/** * Rebuild hibernate session factory * */public static void rebuildSessionFactory() {try {configuration.configure(configFile);sessionFactory = configuration.buildSessionFactory();} catch (Exception e) {System.err.println("%%%% Error Creating SessionFactory %%%%");e.printStackTrace();}}/** * Close the single hibernate session instance. * * @throws HibernateException */ public static void closeCurrentSession() throws HibernateException { Session session = (Session) threadLocal.get(); threadLocal.set(null); if (session != null) { session.close(); } }/** * return session factory * */public static SessionFactory getSessionFactory() {return sessionFactory;}/** * return session factory * *session factory will be rebuilded in the next call */public static void setConfigFile(String configFile) {HibernateSessionFactory.configFile = configFile;sessionFactory = null;}/** * return hibernate configuration * */public static Configuration getConfiguration() {return configuration;}}
在某个类中使用,则应要:
// 开启sessionpublic void openSession() {this.session = HibernateSessionFactory.getCurrentSession();}// 关闭sessionpublic void closeSession() throws HibernateException {this.session.close();}
或者
// 开启事务public void beginTransaction() throws HibernateException {try {this.session = HibernateSessionFactory.getCurrentSession();this.transaction = this.session.beginTransaction();} catch (Exception ex) {throw new HibernateException("开启事务时发生如下错误:" + ex.getMessage());}}// 提交事务public void commitTransaction() throws HibernateException {try {this.transaction.commit();} catch (Exception ex) {ex.printStackTrace();this.transaction.rollback();System.out.println("提交事务时发生如下错误:" + ex.getMessage());throw new HibernateException("提交事务时发生如下错误:" + ex.getMessage());} finally {this.session.close();}}
0 0
- HibernateSessionFactory
- HibernateSessionFactory
- HibernateSessionFactory
- HibernateSessionFactory
- HibernateSessionFactory
- HibernateSessionFactory
- hibernatesessionfactory
- HibernateSessionFactory
- HibernateSessionFactory.java
- HibernateSessionFactory示例
- Hibernate4 HibernateSessionFactory
- HibernateSessionFactory(工具类)
- 解析下HibernateSessionFactory.java
- HIbernate介绍(配置文件、HibernateSessionFactory)
- 创建HibernateSessionFactory工具类
- HibernateSessionFactory 的使用!
- HibernateSessionFactory建立-使用ThreadLocal
- HibernateSessionFactory建立-使用ThreadLocal
- 音视频即时通讯开发中使用P2P技术的好处
- IOS 获得当前设备使用的代理IP
- CentOS 防火墙配置实战精要
- js 获取地址栏里面的参数
- unity transform参数
- HibernateSessionFactory
- ucos2源码阅读之主要函数功能分析
- SQL CREATE TABLE 语句
- MinGW下安装boost
- 比较大小 ——类模板
- object-c 基础内容
- 2014年4月操作系统份额:Windows XP仍然在26%以上,Linux微涨
- mount命令
- 怎么设置输入的EditText字母自动大写