java – 使用Spring,Hibernate和LocalSessionFactoryBuilder配置sessionFactory

前端之家收集整理的这篇文章主要介绍了java – 使用Spring,Hibernate和LocalSessionFactoryBuilder配置sessionFactory前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用 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的更好集成.

原文链接:https://www.f2er.com/java/121113.html

猜你在找的Java相关文章