gpt4 book ai didi

java - 使用 Spring、Hibernate 和 LocalSessionFactoryBuilder 配置 sessionFactory

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:02:46 25 4
gpt4 key购买 nike

我正在尝试使用 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())
<strike>.buildSessionFactory();</strike>

}
}

最佳答案

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

你是对的,方法 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;
}

但现在已弃用的方法 buildSessionFactory() 也为您执行相同的 ServiceRegistry 初始化。

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

关于java - 使用 Spring、Hibernate 和 LocalSessionFactoryBuilder 配置 sessionFactory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14806400/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com