gpt4 book ai didi

java - 如何在 Spring Hibernate 5 LocalSessionFactoryBean 中注入(inject) Spring 管理的 CacheRegionFactory

转载 作者:行者123 更新时间:2023-11-30 10:39:58 25 4
gpt4 key购买 nike

问题

Spring ORM Hibernate 4 附带的 LocalSessionFactoryBean 允许通过 cacheRegionFactory 属性的标准依赖注入(inject)来注入(inject) CacheRegionFactory。

Hibernate 4 LocalSessionFactoryBean Javadoc

现在对于 Spring ORM Hibernate 5 附带的 LocalSessionFactoryBean,不再有这样的属性。

Hibernate 5 LocalSessionFactoryBean Javadoc

当需要对缓存配置进行更精细的控制时,能够注入(inject)区域工厂非常方便,尤其是在使用 Spring 将 Hibernate 配置为二级缓存时。

我的用例是根据我的应用程序配置文件动态指定 TCP/IP Hazelcast 集群的成员。 Hazelcast 用作二级缓存。

问题

如何通过 Spring 依赖注入(inject)将 Spring 管理的缓存区域工厂注入(inject)到 Hibernate 5 LocalSessionFactoryBean 中?也欢迎针对不同方法提出建议。

详情

Hibernate 版本:5.1.0,Spring/Spring ORM 版本:4.2.5,Hazelcast 版本:3.6.4

最佳答案

您可以创建自己的 session 工厂 bean,从 LocalSessionFactoryBean 扩展并覆盖方法 buildSessionFactory 以通过 ServiceRegistryBuilder 为 Hibernate 提供您自己的区域工厂:

class MySessionFactoryBean extends LocalSessionFactoryBean { 
private final RegionFactory regionFactory;

MySessionFactoryBean(RegionFactory regionFactory) {
this.regionFactory = regionFactory;
}

@Override
protected SessionFactory buildSessionFactory(LocalSessionFactoryBuilder sfb) {

StandardServiceRegistryBuilder serviceRegistryBuilder = sfb.getStandardServiceRegistryBuilder();
serviceRegistryBuilder.addService(RegionFactory.class, regionFactory);

return sfb.buildSessionFactory();
}

关于java - 如何在 Spring Hibernate 5 LocalSessionFactoryBean 中注入(inject) Spring 管理的 CacheRegionFactory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39085529/

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