加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 使用Spring,Hibernate和LocalSessionFactoryBuilder配置

发布时间:2020-12-14 05:49:57 所属栏目:Java 来源:网络整理
导读:我正在尝试使用 spring 3.2和hibernate 4创建sessionFactory bean.我使用了以下代码.但问题是不推荐使用buildSessionFactory(),建议在 javadoc中使用buildSessionFactory(ServiceRegistry serviceRegistry).但是,我无法理解什么是ServiceRegistry以及如何使
我正在尝试使用 spring 3.2和hibernate 4创建sessionFactory bean.我使用了以下代码.但问题是不推荐使用buildSessionFactory(),建议在 javadoc中使用buildSessionFactory(ServiceRegistry serviceRegistry).但是,我无法理解什么是ServiceRegistry以及如何使用buildSessionFactory(ServiceRegistry serviceRegistry).
@Configuration
public class AppConfig {

    ...


    @Bean
    public SessionFactory sessionFactory() {
    return new LocalSessionFactoryBuilder(dataSource())
        .scanPackages("com.mypackages")
        .addProperties(hibernateProperties())
        
  

  
   
  .buildSessionFactory(); 

  

    }
}

解决方法

ServiceRegistry接口与服务概念相关(这是Hibernate 4的新特性).服务是为Hibernate提供各种功能的类,用户可以为其插入替代实现.有关详情,请参见 this wiki page.

你是对的,在Hibernate的Configuration类中不推荐使用方法buildSessionFactory(),而使用方法buildSessionFactory(ServiceRegistry serviceRegistry).在纯Hibernate的环境中(没有Spring),假设您将以这样的方式初始化ServiceRegistry的实例:

private static SessionFactory sessionFactory;
private static ServiceRegistry serviceRegistry;

private static SessionFactory configureSessionFactory() throws HibernateException {
    Configuration configuration = new Configuration();
    configuration.configure();

    serviceRegistry = new ServiceRegistryBuilder()
             .applySettings(configuration.getProperties())
             .buildServiceRegistry();

    sessionFactory = configuration.buildSessionFactory(serviceRegistry);
    return sessionFactory;
}

但到目前为止,不推荐使用的方法buildSessionFactory()也为您执行相同的ServiceRegistry初始化.

Spring的LocalSessionFactoryBuilder类只是Hibernate的Configuration类的扩展.但是由于Spring的所有特定工作都是在重载方法LocalSessionFactoryBuilder.buildSessionFactory()中完成的,所以在Spring的环境中不能使用方法buildSessionFactory(ServiceRegistry serviceRegistry).没什么用的,因为使用buildSessionFactory()完成同样的工作是可以的.因此,让我们使用@SuppressWarnings(“弃用”)在AppConfig中注释该方法,并耐心等待Spring提供与Hibernate 4的更好集成.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读