Hibernate4中buildSessionFactory方法废弃问题。

本文探讨了Hibernate4中buildSessionFactory()方法被废弃的原因,并介绍了新的替代方案ServiceRegistry的使用方法及其实现原理。

在用Hibernate4时会发现:

 

 

SessionFactory sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();

 

 

 

 

 

buildSessionFactory()废弃,相信很多人会觉得为什么废弃这方法,查了网上的资料,综合如下:

 

Hibernate给了个ServiceRegistry,然后拿到sessionFactory是通过:

 

@BeforeClass
public static void beforeClass() {
        Configuration configuration = new Configuration();
        //new SchemaExport(new AnnotationConfiguration().configure()).create(false, true);
        //sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
        ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
        SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);

 

 

像网友说的具有注册表存储库功能,功能更多了,上面的方法废弃,其实是hibernate想你用这个类,因为他们写了个更好的东西出来。原来是这样。其实里面的源码还是:

 

 

 

 

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 {
 
 public static SessionFactory sessionfactory = null;
 static {
  try {
   // 通过hibernate.cfg.xml 产生一个SessionFactory  还是和原来的方法一样的。。
   sessionfactory = new Configuration().configure().buildSessionFactory();
  } catch (Throwable ce) {
   ce.printStackTrace();
  }
 }

 

 

 

还是用到我们上面所谓的废弃的方法。

 

这里有篇文章详细介绍了ServiceRegistry。有兴趣的可以看看。

 

http://www.open-open.com/lib/view/open1356339689713.html

 

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iaiti

赏顿早餐钱~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值