The*_*ect 6 java spring hibernate sessionfactory
我正在尝试sessionFactory使用spring 3.2和hibernate 4 创建bean.我使用了以下代码.但问题是buildSessionFactory()已弃用,buildSessionFactory(ServiceRegistry serviceRegistry)建议在javadoc中使用.但是,我无法理解什么是ServiceRegistry以及如何使用buildSessionFactory(ServiceRegistry serviceRegistry).
@Configuration
public class AppConfig {
...
@Bean
public SessionFactory sessionFactory() {
return new LocalSessionFactoryBuilder(dataSource())
.scanPackages("com.mypackages")
.addProperties(hibernateProperties())
.buildSessionFactory();
}
}
Run Code Online (Sandbox Code Playgroud)
ServiceRegistryinterface与服务的概念有关(这是Hibernate 4的新特性).服务是为Hibernate提供各种功能的类,用户可以为其插入替代实现.有关详细信息,请参阅此Wiki页面.
你是对的,buildSessionFactory()在Hibernate的Configuration类中不赞成使用方法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;
}
Run Code Online (Sandbox Code Playgroud)
但到目前为止,已弃用的方法buildSessionFactory()也会ServiceRegistry为您执行相同的初始化.
Spring的LocalSessionFactoryBuilder类只是Hibernate Configuration类的扩展.但是由于Spring的所有特定工作都是在override方法中完成的,所以LocalSessionFactoryBuilder.buildSessionFactory()你不能buildSessionFactory(ServiceRegistry serviceRegistry)在Spring的环境中使用方法.没什么用的buildSessionFactory(),因为它可以使用完全相同的工作.因此,让我们只是注释方法AppConfig有@SuppressWarnings("deprecation")耐心等待春天提供与Hibernate 4更好的集成.
| 归档时间: |
|
| 查看次数: |
7167 次 |
| 最近记录: |