Hibernate、Hibernate4获取SessionFactory对象方法的变化
来源:互联网 发布:好闻的香水 知乎 编辑:程序博客网 时间:2024/06/05 02:29
Hibernate、Hibernate4获取SessionFactory对象方法的变化
Hibernate用来获取配置文件的类是Configuration,若用Annotation的话就是AnnotationConfiguration类。
例:Configuration config = new Configuration();
config.configure("hibernate.cfg.xml");//用configure()方法取得。
//或者config.configure();不用加参数,因为只有需要一个//hibernate.cfg.xml在src路径下。Hibernate会自动匹配
取得配置文件后:需要一个Session对象来操作数据库的存取。Session对象是有SessionFactory的对象来产生的。
在4.0版本之前sessionFactory由取得配置文件的对象config.BuildSessionFactory();产生。
SessionFactory sessionFactory =config.buildSessionFactory();
再由sessionFactory.getCurrentSession();方法产生session。
Session session = sessionFactory.getCurrentSession();
有了session对象之后就可以对数据库进行操作了。但hibernate的所有操作都是建立在事务之上的。所以session操作之前要先打开一个事务:
session.beginTransaction();
同理操作完之后要提交事务:
session.getTransaction().commit();
若出错。可回滚:
session.getTransaction().roolback();(这两句可放在tyr{……}catch{……}语句里面)
另外还要关闭session对象:
session.close();
升级到4.0之后取得session的方法有所改变,hibernate增加了一个注册机ServiceRegistryBuilder 类。要先生成一个注册机对象,然后所有的生成SessionFactory的对象要象注册机注册一下再用。生成方法还是config.buildSessionFactory()方法,不过加了个注册机的参数。config.buildSessionFactory(ServiceRegistry registry);
具体方法如下:
ServiceRegistry resgistry = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();
SessionFactory factory = config.buildSessionFactory(resgistry);
Session session = factory.openSession();
hibernate4下拿到SessionFactory的一段经典代码
当我们去拿hibernate4的sessionFactory时,我们发现原来使的一直很顺手的new Configuration().configure().buildSessionFactory()中的buildSessionFactory方法已经过期了,取而代之的是buildSessionFactory(ServiceRegistry serviceRegistry)方法。查看ServiceRegistry的构造方法,顿时感觉天旋地转,这相当地令人抓狂,不过hibernate可能有其自己的考虑。
经过自己去google,发现了一段经典的取ServiceRegistry的代码,不敢独享,特贴出来与大家共享!
privatestaticSessionFactory sessionFactory;
privatestaticServiceRegistry serviceRegistry;
privatestaticSessionFactory configureSessionFactory()throwsHibernateException{
Configuration configuration =newConfiguration();
configuration.configure();
serviceRegistry =newServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
sessionFactory = configuration.buildSessionFactory(serviceRegistry);
return sessionFactory;
}
相关代码:
package cn.framework.dao.util;
import org.hibernate.HibernateException;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;import org.hibernate.service.ServiceRegistry;import org.hibernate.service.ServiceRegistryBuilder;
public class HibernateUtil { //Hibernate public static SessionFactory sessionfactory = null;
static { try { // 通过hibernate.cfg.xml 产生一个SessionFactory sessionfactory = new Configuration().configure().buildSessionFactory(); } catch (Throwable ce) { ce.printStackTrace(); } } //Hibernate4 private static SessionFactory sessionFactory; private static ServiceRegistry serviceRegistry;
public static SessionFactory configureSessionFactory()throws HibernateException { Configuration configuration = new Configuration(); configuration.configure(); serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry(); sessionFactory = configuration.buildSessionFactory(serviceRegistry); return sessionFactory; }}
- Hibernate、Hibernate4获取SessionFactory对象方法的变化
- Hibernate、Hibernate4获取SessionFactory对象方法的变化
- Hibernate4中获取SessionFactory的方法
- Hibernate4.3.9获取SessionFactory的方法
- hibernate SessionFactory的获取方法
- hibernate 获取SessionFactory的方法
- Hibernate4 获取SessionFactory 的方式
- Hibernate4 获取SessionFactory 的方式
- hibernate4.2关于sessionFactory的一点变化
- hibernate4.2关于sessionFactory的一点变化
- hibernate 创建 SessionFactory 的变化
- Hibernate4 获取SessionFactory 的2种方式
- Spring3与hibernate4整合,sessionFactory.getCurrentSession()方法获取不到Session对象异常解决办法
- Hibernate4中获取SessionFactory
- hibernate4 获取sessionFactory
- hibernate4获取SessionFactory
- hibernate4.3创建SessionFactory的方法
- Hibernate 4 获取session对象的变化
- 用余弦定理求三角形内角
- Java日期时间使用总结
- 开发应用需要注意事项
- SQL查询案例:多行转换为一行
- android init
- Hibernate、Hibernate4获取SessionFactory对象方法的变化
- 常用的正则验证规则
- 深入浅出 - Android系统移植与平台开发(十二) - Sensor HAL框架分析之二
- 使用Android的WebView控件调用本地代码
- 开始算法学习啦!记录下来过程!
- Affinity propagation for clustering
- JAVA使用 java-unrar-0.3.jar 解压rar,并且解决中文乱码
- 微软面试100题---将 二叉搜索树 转化成 有序的双向链表
- 掌上灵通退市:一个时代的终结