spring boot 2.1.4 hibernate二级缓存 Hazelcast实现(一)

Hazelcast优势网上都可以查到,默认的分布式缓存,使用Hazelcast替换ehcache优势比较明显,也方便项目从单机到发展分布式,而不用再引入其他组件也达到了性能要求,按照springboot推荐,这里使用JCache规范操作缓存,引入包

<!-- 集成jcache规范 -->
		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-jcache</artifactId>
		</dependency>
		 <!-- hazelcast jar  -->
		<dependency>
			<groupId>com.hazelcast</groupId>
			<artifactId>hazelcast</artifactId>
		</dependency>
		<dependency>
			<groupId> com.hazelcast </groupId>
			<artifactId>hazelcast-spring</artifactId>
		</dependency>
		
		<dependency>
			<groupId>org.springframework.session</groupId>
			<artifactId>spring-session-core</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.session</groupId>
			<artifactId>spring-session-hazelcast</artifactId>
		</dependency>

spring-session-core和spring-session-hazelcast这两个包是为了将session也保存到hazelcast中,这时候系统就是分布式的了

配置spring.jp .properties.hibernate.cache.region.factory_class=org.hibernate.cache.jcache.internal.JCacheRegionFactory或是

@Bean
    public HibernatePropertiesCustomizer hibernateSecondLevelCacheCustomizer(JCacheCacheManager jCacheCacheManager) {
        return (properties) -> properties.put(ConfigSettings.CACHE_MANAGER, jCacheCacheManager.getCacheManager());
    }

上面两种方式配置一种就可以了,hibernate二级缓存就算配置好了

 

启动时系统出现了警告:

org.hibernate.orm.cache : HHH90001006: Missing cache[com.bc.core.system.entity.SysUser] was created on-the-fly. The created cache will use a provider-specific default configuration: make sure you defined one. You can disable this warning by setting 'hibernate.javax.cache.missing_cache_strategy' to 'create'.

 意思是我们需要配置hibernate.javax.cache.missing_cache_strategy=create,表示如果没有在配置文件中配置缓存,将会自动创建,这里的配置文件是hazelcast.xml,但是这里我们并没有这个文件,hazelcast会自动读取默认的一份配置文件,在hazelcast的jar包中有hazelcast-default.xml文件,记录了默认配置,要自定义配置时,复制一份,重命名为hazelcast.xml,放到resources目录下,会自动读到

路径配置spring.hazelcast.config=classpath:hazelcast.xml    可以不用配置

这里给出一份hazelcast.xml文件中cache配置示例,默认里面没有,找官方文档才发现,网上都是配置map的

<cache name="default">
		<key-type class-name="java.lang.Object" />
		<value-type class-name="java.lang.Object" />
		<statistics-enabled>true</statistics-enabled>
		<management-enabled>true</management-enabled>
		<read-through>true</read-through>
		<write-through>true</write-through>
		<backup-count>1</backup-count>
		<async-backup-count>1</async-backup-count>
		<in-memory-format>BINARY</in-memory-format>
		<eviction size="10000" max-size-policy="ENTRY_COUNT"
			eviction-policy="LRU" />
		<quorum-ref>quorum-name</quorum-ref>
		<disable-per-entry-invalidation-events>true
		</disable-per-entry-invalidation-events>
		<!-- 
		<cache-loader-factory class-name="com.example.cache.MyCacheLoaderFactory" />
		<cache-writer-factory class-name="com.example.cache.MyCacheWriterFactory" />
		<expiry-policy-factory class-name="com.example.cache.MyExpiryPolicyFactory" />
		<cache-entry-listeners>
			<cache-entry-listener old-value-required="false"
				synchronous="false">
				<cache-entry-listener-factory
					class-name="com.example.cache.MyEntryListenerFactory" />
				<cache-entry-event-filter-factory
					class-name="com.example.cache.MyEntryEventFilterFactory" />
			</cache-entry-listener>
		</cache-entry-listeners> 
		-->
	</cache>

 

hibernate.javax.cache.missing_cache_strategy 这是hibernate配置项,对应到spring中

在application.properties中的配置项:spring.jpa.properties.hibernate.javax.cache.missing_cache_strategy=create

转载于:https://my.oschina.net/u/1428688/blog/3063976

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值