Hazelcast作为hibernate缓存和业务缓存

2024-08-22 23:38

本文主要是介绍Hazelcast作为hibernate缓存和业务缓存,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

http://www.blogjava.net/AllanZ/archive/2013/02/22/cache-hazelcast.html

做去皮儿网( http://www.qupier.com),内容管理是一个 系统,前端网站是一个系统,这两个系统之间独立部署,但是缓存要能够互通。例如后台修改了某个消息类型的说明,在前段网站上要能够展现出来(使用了 hibernate的查询缓存)。其他的一些场景也许要缓存,例如网站的shiro权限信息缓存,不过这个不需要和后端系统互通。但是既然开搞,也不好意 思再挂着ehcache。于是一并升级。

前面一篇日志各种碰壁后,终于找到了理论上能够实现功能的两个产品:gemfire和hazelcast。于是,开始尝试。

首先是gemfire,有locator等概念。官方也看到了gemfire-hibernate模块。但是很奇怪,各种配置各种报错。

然后前面一篇日志的评论里面网友 @吴勇智提到了hazelcast。所以也来试试。结果出奇的顺利。记录一下过程。

1.下载、运行hazelcast

下载后随便解压,其实直接执行bin/server.bat即可。但是为了能够眼见为实,于是首先把包中的mancenter.war找了个tomcat部署起来,然后修改bin/hazelcast.xml,把
management-center打开。并指向刚部署的mancenter访问路径。然后再启动hazelcast服务:bin/server.bat。

2.hibernate二级缓存和查询缓存

我用spring结合hibernate使用,但是没有用jpa。最后配置如下:

 1  < bean  id ="sessionFactory"
 2          class ="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean" >
 3          < property  name ="dataSource" >
 4              < ref  bean ="dataSource"  />
 5          </ property >
 6          < property  name ="packagesToScan" >
 7              < list >
 8                  < value >com.my.**.model </ value >
 9              </ list >
10          </ property >
11          < property  name ="hibernateProperties" >
12              < props >
13                  < prop  key ="hibernate.dialect" >${hibernate.dialect} </ prop >
14                  < prop  key ="hibernate.show_sql" >${hibernate.show_sql} </ prop >
15                  < prop  key ="hibernate.jdbc.fetch_size" >${hibernate.jdbc.fetch_size} </ prop >
16                  < prop  key ="hibernate.jdbc.batch_size" >${hibernate.jdbc.batch_size} </ prop >
17                  < prop  key ="hibernate.hbm2ddl.auto" >${hibernate.hbm2ddl.auto} </ prop >
18                  < prop  key ="hibernate.cache.use_second_level_cache" >${hibernate.cache.use_second_level_cache} </ prop >
19                  < prop  key ="hibernate.cache.use_query_cache" >${hibernate.cache.use_query_cache} </ prop >
20                  < prop  key ="hibernate.validator.autoregister_listeners" >${hibernate.validator.autoregister_listeners} </ prop >
21                  < prop  key ="hibernate.validator.apply_to_ddl" >${hibernate.validator.apply_to_ddl} </ prop >
22                  < prop  key ="javax.persistence.validation.mode" >${javax.persistence.validation.mode} </ prop >
23         
24                  < prop  key ="hibernate.cache.region.factory_class" >${hibernate.cache.region.factory_class} </ prop >
25                  < prop  key ="hibernate.cache.use_minimal_puts" >${hibernate.cache.use_minimal_puts} </ prop >
26                  < prop  key ="hibernate.cache.hazelcast.use_native_client" >${hibernate.cache.hazelcast.use_native_client} </ prop >
27                  < prop  key ="hibernate.cache.hazelcast.native_client_address" >${hibernate.cache.hazelcast.native_client_address} </ prop >
28                  < prop  key ="hibernate.cache.hazelcast.native_client_group" >${hibernate.cache.hazelcast.native_client_group} </ prop >
29                  < prop  key ="hibernate.cache.hazelcast.native_client_password" >${hibernate.cache.hazelcast.native_client_password} </ prop >
30              </ props >
31          </ property >
32      </ bean >

然后是properties配置文件:

 1 hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
 2 hibernate.show_sql=true
 3 hibernate.jdbc.fetch_size=25
 4 hibernate.jdbc.batch_size=30
 5 hibernate.hbm2ddl.auto=update
 6 hibernate.cache.region.factory_class=com.hazelcast.hibernate.HazelcastCacheRegionFactory
 7 hibernate.cache.use_query_cache=true
 8 hibernate.cache.use_second_level_cache=true
 9 
10 hibernate.validator.autoregister_listeners=false
11 hibernate.validator.apply_to_ddl=false
12 javax.persistence.validation.mode=none
13 
14 hibernate.cache.use_minimal_puts=true
15 hibernate.cache.hazelcast.use_native_client=true
16 hibernate.cache.hazelcast.native_client_address=localhost
17 hibernate.cache.hazelcast.native_client_group=dev
18 hibernate.cache.hazelcast.native_client_password=dev-pass

然后就OK了。

另外封装了一个可以直接使用的cache。内部调用hazelcast。不同的cache region就简单的使用了hazelcast的map。

折腾了几天,总算告一段落。

这篇关于Hazelcast作为hibernate缓存和业务缓存的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1097731

相关文章

Java实现本地缓存的常用方案介绍

《Java实现本地缓存的常用方案介绍》本地缓存的代表技术主要有HashMap,GuavaCache,Caffeine和Encahche,这篇文章主要来和大家聊聊java利用这些技术分别实现本地缓存的方... 目录本地缓存实现方式HashMapConcurrentHashMapGuava CacheCaffe

如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)

《如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)》:本文主要介绍如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)问题,具有很好的参考价值,希望对大家有所帮助,如有... 目录先在你打算存放的地方建四个文件夹更改这四个路径就可以修改默认虚拟内存分页js文件的位置接下来从高级-

PyCharm如何更改缓存位置

《PyCharm如何更改缓存位置》:本文主要介绍PyCharm如何更改缓存位置的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录PyCharm更改缓存位置1.打开PyCharm的安装编程目录2.将config、sjsystem、plugins和log的路径

JSR-107缓存规范介绍

《JSR-107缓存规范介绍》JSR是JavaSpecificationRequests的缩写,意思是Java规范提案,下面给大家介绍JSR-107缓存规范的相关知识,感兴趣的朋友一起看看吧... 目录1.什么是jsR-1072.应用调用缓存图示3.JSR-107规范使用4.Spring 缓存机制缓存是每一

Spring 缓存在项目中的使用详解

《Spring缓存在项目中的使用详解》Spring缓存机制,Cache接口为缓存的组件规范定义,包扩缓存的各种操作(添加缓存、删除缓存、修改缓存等),本文给大家介绍Spring缓存在项目中的使用... 目录1.Spring 缓存机制介绍2.Spring 缓存用到的概念Ⅰ.两个接口Ⅱ.三个注解(方法层次)Ⅲ.

Spring Boot 整合 Redis 实现数据缓存案例详解

《SpringBoot整合Redis实现数据缓存案例详解》Springboot缓存,默认使用的是ConcurrentMap的方式来实现的,然而我们在项目中并不会这么使用,本文介绍SpringB... 目录1.添加 Maven 依赖2.配置Redis属性3.创建 redisCacheManager4.使用Sp

springboot项目redis缓存异常实战案例详解(提供解决方案)

《springboot项目redis缓存异常实战案例详解(提供解决方案)》redis基本上是高并发场景上会用到的一个高性能的key-value数据库,属于nosql类型,一般用作于缓存,一般是结合数据... 目录缓存异常实践案例缓存穿透问题缓存击穿问题(其中也解决了穿透问题)完整代码缓存异常实践案例Red

Spring三级缓存解决循环依赖的解析过程

《Spring三级缓存解决循环依赖的解析过程》:本文主要介绍Spring三级缓存解决循环依赖的解析过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、循环依赖场景二、三级缓存定义三、解决流程(以ServiceA和ServiceB为例)四、关键机制详解五、设计约

Redis中6种缓存更新策略详解

《Redis中6种缓存更新策略详解》Redis作为一款高性能的内存数据库,已经成为缓存层的首选解决方案,然而,使用缓存时最大的挑战在于保证缓存数据与底层数据源的一致性,本文将介绍Redis中6种缓存更... 目录引言策略一:Cache-Aside(旁路缓存)策略工作原理代码示例优缺点分析适用场景策略二:Re

Linux修改pip和conda缓存路径的几种方法

《Linux修改pip和conda缓存路径的几种方法》在Python生态中,pip和conda是两种常见的软件包管理工具,它们在安装、更新和卸载软件包时都会使用缓存来提高效率,适当地修改它们的缓存路径... 目录一、pip 和 conda 的缓存机制1. pip 的缓存机制默认缓存路径2. conda 的缓