Oracle
Coherence 是一个面向企业级应用的分布式缓存框架,看过它的简单介绍后,感觉是:很好很强大。
Hibernate
封装了统一的 Cache接口 CacheProvider ,可以方便的集成实现该接口的第三方Cache框架。
本文就不详细介绍 Coherence 的特点和优势了,感兴趣或要使用的直接到Oracle网站去查询。http://www.oracle.com/products/middleware/coherence/index.html
如何与Hibenate进行集成,
Coherence的userguide只简单说了一下原理性的东东,没有具体实例。我仔细做了一个从头到尾的过程,直到Hibernate应用跑起来,并观察日志,确认Coherence缓存起作用为止。
以下是我记录下来的配置运行过程,供需要的同学参考。
1. 运行前的说明
本 demo
客户端是Hibernate的数据操作代码,无外乎 session.update(),query.list()
等等。
测试准备两台物理机器 M1, M2 。M1 上跑Hibernate应用, 和1个Node;
M2上准备跑 2 个Coherence 缓存节点(Node). 这里3个Node分散到两个
机器,主要是演示Coherence集群的自管理的强大功能。
[img]/upload/attachment/42720/e4c427b3-1651-3092-a207-fe6da4f102bf.jpg"
alt="[/img]
原理简要说明:M2上的Node启动后,将自动加入Coherence
缓存集群(Cluster); 客户端Hibernate应用启动,执行后,由于也使用了Coherence, 它的查询操作将到 集群
上的三个Node的Cache中去取数据;只是第一次query会从数据库取数据,并放到Node的缓存中,以后各次query,findByPk
等操作,都会到Node的缓存中取。
2.
Cache服务端配置
2.1) 启动Node bat文件准备
Coherence开发包的目录很简单,只有 bin,doc,lib,examples 四个目录,原以为只要启动
coherence/bin/coherence.cmd 就可以了,后来发现没那么简单。
要让M2上的Node缓存Hibernate应用的数据,需要 org.hibernate.cache.QueryKey 等类,因此需要将
hibernate3.jar 加入classpath;
要缓存hibernate应用中的
com.xxx.system.perm.PermVO 等VO类,还必须将自己应用的
jar包也放到classpath中。
其他还需要一些相关的jar,如:dom4j,common-logging
等,最终编写了一个 runCache.bat
文件,做好必要的初始化工作:
runCache.bat
引用
rem
Register cache region:
org.hibernate.cache.StandardQueryCache
rem Register cache
region: HIBERNATE_QUERY_CACHE
set
java_opts=-Dtangosol.coherence.cacheconfig=hibernate-cache-config.xml
set
classpath=lib/hibernate3.jar
set
classpath=%classpath%;lib/hibernate3-sqlquerycache-fix.jar
set
classpath=%classpath%;lib/dom4j-1.6.jar
set
classpath=%classpath%;lib/commons-lang-2.1.jar
set
classpath=%classpath%;lib/commons-logging.jar
set
classpath=%classpath%;lib/cglib-2.1.jar
set
classpath=%classpath%;lib/xxx-project.jar
coherence.cmd
我的coherence工作目录是
引用
d:\coherenceNode\
其中在我的工作目录下专门建了一个
lib 目录,存放需要的新的jar包,并将配置文件从 coherence-hibernate.jar/config
目录下移到工作目录下,目录结构是:
引用
lib
hibernate-cache-config.xml
runCache.bat
[img]/upload/attachment/42577/11dfaeba-8a74-39e3-9c3d-d60cb47dd2b8.jpg"
alt="[/img]
这要,运行 runCache.bat 就可以启动一个 Coherence
Node实例。本文在M2机器上开2个 cmd 窗口,启动2个实例, 在 M1 上启动一个 Node
实例。启动后的结果大致如:
[img]/upload/attachment/42575/57ba5d87-1175-38fb-ac4c-d7902d61bb9a.jpg"
alt="" width="512" height="304[/img]
引用
Group{Address=224.3.3.1,
Port=33389, TTL=4}
MasterMemberSet
(
ThisMember=Member(Id=3, Timestamp=2008-10-14 17:41:25.062,
Address
OldestMember=Member(Id=1, Timestamp=2008-10-14
17:39:30.125, Addre
ActualMemberSet=MemberSet(Size=3,
BitSetCount=2
Member(Id=1, Timestamp=2008-10-14
17:39:30.125, Address=172.20.3
Member(Id=2,
Timestamp=2008-10-14 17:41:03.234, Address=172.20.3
Member(Id=3, Timestamp=2008-10-14 17:41:25.062,
Address=172.20.3
)
RecycleMillis=120000
RecycleSet=MemberSet(Size=0,
BitSetCount=0
)
2.2)
缓存配置
hibernate-cache-config.xml 是一个必要的缓存配置,本例使用
HibernateReplicatedCache 复制模式。
通过
引用
set
java_opts=-Dtangosol.coherence.cacheconfig=hibernate-cache-config.xml
加入Java命令的启动参数中,
coherence 会替换默认的配置。
还要修改 coherence 的缺省启动命令 coherence.cmd,
将java_opts 加入到原有的变量中,将
引用
set
java_opts="-Xms%memory% -Xmx%memory%
-Dtangosol.coherence.distributed.localstorage=%storage_enabled%"
修改为
引用
set
java_opts="-Xms%memory% -Xmx%memory%
-Dtangosol.coherence.distributed.localstorage=%storage_enabled%
%java_opts%"
并将 coherence-hibernate.jar
加入classpath中, 将
引用
-cp
"%coherence_home%\lib\coherence.jar"
修改为
引用
-cp
"%coherence_home%\lib\coherence.jar;%coherence_home%\lib\coherence-hibernate.jar"
相关推荐
根据提供的文档信息,以下是对Coherence企业级缓存与Hibernate集成的相关知识点的详细解析: ### Coherence企业级缓存简介 Oracle Coherence 是一个高性能、可扩展的企业级分布式内存数据网格解决方案。它允许应用...
根据提供的文档信息,本文将详细解析Coherence企业级缓存与Hibernate集成的相关知识点,包括配置方法、集成步骤以及实现机制。 ### Coherence企业级缓存简介 Coherence是一款由Oracle公司开发的企业级分布式内存...
《Coherence企业级缓存深度解析》 Oracle Coherence是一款高效的企业级数据缓存系统,它为分布式应用程序提供了数据管理、缓存以及服务网格的功能。本文将深入探讨Coherence的核心特性,包括其QuickStart和编程模型...
- [Coherence企业级缓存(五)与Hibernate集成(1)](http://raymondhekk.javaeye.com/blog/260418) - [Coherence企业级缓存(五)与Hibernate集成(2)](http://raymondhekk.javaeye.com/blog/260419) - [Coherence企业级...
### Coherence企业级缓存详解 #### 一、Coherence概览 Coherence是由Oracle公司提供的企业级分布式集群缓存框架,旨在为大型系统提供高效、可靠的数据管理和缓存服务。其核心特性包括自管理、自恢复以及高可用性,...
- 事务范围缓存:仅当前事务可见,生命周期与事务一致,如Hibernate的一级缓存。 - 进程范围缓存:所有进程内的事务可以共享,可能需要事务隔离措施。 - 集群范围缓存:跨越多个进程或机器,需要数据一致性策略,如...
- 支持多种ORM框架,如TopLink、Hibernate和JPA,实现了这些框架与Coherence之间的无缝集成。 - 支持同步和异步操作模式,提供了灵活性和效率。 4. **高可用性和故障转移机制** - 通过备份机制来保障数据安全,...
Oracle Coherence是一个企业级的分布式集群缓存框架。具有自管理,自恢复,高可用性,高扩展性等优良特点,在电信BOSS等项目中有很大的应用价值。本文对它的特点,架构,基本使用方法,JMX管理,调优等进行简要但...
- **ORM(Hibernate,Toplink)缓存**:ORM框架通常内置了一级缓存和二级缓存机制,以减少对数据库的访问次数。 - **数据库层的缓存**:在数据库级别进行缓存,如使用MySQL的Query Cache。 - **业务对象的缓存**:...
2. **Hibernate Second Level Cache**:Hibernate作为流行的ORM框架,内置了二级缓存机制,可以与Ehcache、Infinispan等缓存提供者集成。 3. **Infinispan**:Infinispan是一个高性能、分布式的内存数据网格,适用于...
此外,它还支持与其他非甲骨文技术如Spring、Hibernate的集成,实现企业级应用的复杂需求。 总结来说,"Weblogic管理员指南"是深入了解和掌握WebLogic Server管理的宝贵资料,无论你是初学者还是经验丰富的管理员,...