`
raymond2006k
  • 浏览: 295093 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Coherence企业级缓存(五)与Hibernate集成(2)

阅读更多
接上篇  Coherence 与 Hibernate集成(一)


3. Cache客户端配置:Hibernate配置
3.1) hibernate.cfg.xml
<property name="hibernate.cache.provider_class">
com.tangosol.coherence.hibernate.CoherenceCacheProvider</property>	
<property name="hibernate.cache.use_minimal_puts">true</property>
<property name="hibernate.cache.use_query_cache">true</property>


3.2) 启用查询缓存的代码
要确保代码中使用查询,即在创建 query 后,打开开关,并设置cacheRegion,本例中使用统一的 cacheRegion “HIBERNATE_QUERY_CACHE”

query.setCacheable(true);
query.setCacheRegion(HIBERNATE_QUERY_CACHE);


3.3) 启用实体L2缓存
在 hbm.xml 中配置  节点,为VO类启用实体缓存。

 
<class name="com.xxx.system.perm.persistent.PermVO" table="SYS_PERM"> 
<cache usage="nonstrict-read-write"/>


     3.4) 客户端缓存配置
客户端要使用与服务端同样的缓存配置 hibernate-cache-config.xml, 否则可能无法进行存储。 本例将其复制过来,放到classpath 下的 config目录中,因此,客户端启动命令(如果是tomcat,weblogic,websphere,修改相应cmd或bat文件)中也要加java参数:
引用
-Dtangosol.coherence.cacheconfig=config/hibernate-cache-config.xml


4. 启动客户端Hibernate应用程序

执行数据查询操作,观察日志,以确定数据存储到了M2的三个节点中。
4.1) Coherence客户端启动日志

引用
2008-10-14 17:56:13.609 Oracle Coherence 3.3.1/389  (thread=main, member=n/a): Loaded ...
2008-10-14 17:56:13.625 Oracle Coherence 3.3.1/389  (thread=main, member=n/a): Loaded ...
2008-10-14 17:56:13.625 Oracle Coherence 3.3.1/389  (thread=main, member=n/a): Optional ...

Oracle Coherence Version 3.3.1/389
Grid Edition: Development mode
Copyright (c) 2000-2007 Oracle. All rights reserved.
2008-10-14 17:56:15.296 Oracle Coherence GE 3.3.1/389  (thread=Cluster, member=n/a): Service Cluster ...
2008-10-14 17:56:15.515 Oracle Coherence GE 3.3.1/389  (thread=Cluster, member=n/a): This Member(Id=5,...
2008-10-14 17:56:15.609 Oracle Coherence GE 3.3.1/389  (thread=Cluster, member=n/a): Member(Id=2, Ti...
2008-10-14 17:56:15.609 Oracle Coherence GE 3.3.1/389  (thread=Cluster, member=n/a): Member(Id=3, ....
2008-10-14 17:56:15.703 Oracle Coherence GE 3.3.1/389  (thread=main, member=5):


4.2) 观察Hibernate SQL输出
记得在log4j.xml 中打开相应的日志开关:
<category name="org.hibernate.SQL">
		<priority value="DEBUG" />		
		<appender-ref ref="CONSOLE" /> <!-- ASYNC_Hibernate_SQL -->
	</category>					

观察日志输出
引用

Execute No. 1 ********************
2008-10-14 18:00:44,687 [DEBUG](AbstractBatcher.java,346) - select  this.PERMCODE as  PERM1_15_0_, ....
(No.1)result size:1

Execute No. 2 ********************
(No.2)result size:1

Execute No. 3 ********************
(No.3)result size:1

Execute No. 4 ********************
(No.4)result size:1

Execute No. 5 ********************
(No.5)result size:1


第一次执行了sql,
后面sql都未执行,并且查询结果数为1,和第一次执行sql的结果相同。表明之后从Coherence中获取了数据, 缓存生效。

4.3) 查看M2 上的cache数据:

在M2上的节点控制台切换到 HIBERNATE_QUERY_CACHE cache下面,执行:
引用

cache HIBERNATE_QUERY_CACHE



并执行Coherence命令
引用
list


命令查看所有已在Cache中存储的数据。 下面的日志每个 sql:开头的就是一个对Query的缓存项。
引用

Map (HIBERNATE_QUERY_CACHE): list
sql: select managelogv0_.LOGID as LOGID5_, managelogv0_.OPRTIME as
TE5_, managelogv0_.OPRACTION as OPRACTION5_, managelogv0_.OPRTYPE a
OG managelogv0_; parameters: ; named parameters: {}; first row: 0;
, 285, 286, 287, 288, 321]
key1 = value1
sql: select  this.PERMCODE as  PERM1_15_0_,  this.MODULECODE as  MO
RM5_15_0_,  this.PORTNO as  PORT6_15_0_ from (select  t.perm_code a
       t.module_code as moduleCode,
       t.perm_name as permName,
       t.perm_desc as permDesc,
       t.port_no as portNo,
       t.perm_type_code as permTypeCode
                from sys_perm t join sys_role_perm o
    on t.perm_code = o.perm_code
    where o.role_code = ? ) this  ; parameters: ; named parameters:
sql: select count(*) as col_0_0_ from SYS_MANAGELOG managelogv0_; p&hellip;.


OK, 大功告成,成功将Coherence与Hibernate集成,Hibernate通过Coherence进行实体数据,查询数据的缓存。



Coherence企业级缓存(一) 特点
Coherence企业级缓存(二) QuickStart和编程
Coherence企业级缓存(三) 四种缓存类型
Coherence企业级缓存(四) 数据管理模式
Coherence企业级缓存(五)与Hibernate集成(1)
Coherence企业级缓存(五)与Hibernate集成(2)
Coherence企业级缓存(六) JMX 管理和监控
Coherence企业级缓存(七) 性能调优
分享到:
评论
1 楼 raymond2006k 2008-10-18  
引用
不是有JBossCache么?为什么还要和Oracle的Coherence来集成?


虽都是分布式缓存方案,但Coherence是企业级Cache框架比JBOSSCache等强大很多。

Coherence的重要特点使用很简单,但功能强大:集群的自管理(自动发现Node),线性扩展性,以及支持分区缓存(Partitioned Cache);后两者更是充分体现它比一般Cache框架的强大之处。
此外它还支持 ExternalizableLite 接口替换 Serializable 接口,提升序列化性能;.... 还有很多优质特性我还没时间充分研究使用。

以前开源的Cache框架不止一个,但Coherence一个几M的SDK, Oracle舍得花巨资收购,并纳入Oracle SOA 体系, 也可能想见它的不一般之处。

Coherence 现在很贵,估计只有大企业用的多,所以 google上的资料的确很少。当然,选Jboss还是Coherence,或者是 Gigaspaces,memchache 等, 要依据项目规模,预算,架构特点等来抉择。

楼上感兴趣,可以到oracle网站上看看资料。

相关推荐

    Coherence企业级缓存(五)与Hibernate集成(2) .pdf

    根据提供的文档信息,本文将详细解析Coherence企业级缓存与Hibernate集成的相关知识点,包括配置方法、集成步骤以及实现机制。 ### Coherence企业级缓存简介 Coherence是一款由Oracle公司开发的企业级分布式内存...

    Coherence企业级缓存(五)与Hibernate集成(1).pdf

    根据提供的文档信息,以下是对Coherence企业级缓存与Hibernate集成的相关知识点的详细解析: ### Coherence企业级缓存简介 Oracle Coherence 是一个高性能、可扩展的企业级分布式内存数据网格解决方案。它允许应用...

    Coherence企业级缓存

    《Coherence企业级缓存深度解析》 Oracle Coherence是一款高效的企业级数据缓存系统,它为分布式应用程序提供了数据管理、缓存以及服务网格的功能。本文将深入探讨Coherence的核心特性,包括其QuickStart和编程模型...

    7.Coherence企业级缓存(六) JMX 管理和监控.pdf

    - [Coherence企业级缓存(五)与Hibernate集成(2)](http://raymondhekk.javaeye.com/blog/260419) - [Coherence企业级缓存(七)性能调优](http://raymondhekk.javaeye.com/blog/260421) 以上链接提供了Coherence系列...

    1.Coherence企业级缓存(一) 特点.pdf

    ### Coherence企业级缓存详解 #### 一、Coherence概览 Coherence是由Oracle公司提供的企业级分布式集群缓存框架,旨在为大型系统提供高效、可靠的数据管理和缓存服务。其核心特性包括自管理、自恢复以及高可用性,...

    Hibernate缓存深入详解.ppt

    - 事务范围缓存:仅当前事务可见,生命周期与事务一致,如Hibernate的一级缓存。 - 进程范围缓存:所有进程内的事务可以共享,可能需要事务隔离措施。 - 集群范围缓存:跨越多个进程或机器,需要数据一致性策略,如...

    Oracle Coherence

    - 支持多种ORM框架,如TopLink、Hibernate和JPA,实现了这些框架与Coherence之间的无缝集成。 - 支持同步和异步操作模式,提供了灵活性和效率。 4. **高可用性和故障转移机制** - 通过备份机制来保障数据安全,...

    Oracle Coherence(Oracle 数据网格java包)coherence-java-3.7.1

    Oracle Coherence是一个企业级的分布式集群缓存框架。具有自管理,自恢复,高可用性,高扩展性等优良特点,在电信BOSS等项目中有很大的应用价值。本文对它的特点,架构,基本使用方法,JMX管理,调优等进行简要但...

    分布式缓存与JavaEE

    - **ORM(Hibernate,Toplink)缓存**:ORM框架通常内置了一级缓存和二级缓存机制,以减少对数据库的访问次数。 - **数据库层的缓存**:在数据库级别进行缓存,如使用MySQL的Query Cache。 - **业务对象的缓存**:...

    j2ee cache framework

    2. **Hibernate Second Level Cache**:Hibernate作为流行的ORM框架,内置了二级缓存机制,可以与Ehcache、Infinispan等缓存提供者集成。 3. **Infinispan**:Infinispan是一个高性能、分布式的内存数据网格,适用于...

    weblogic管理员指南

    此外,它还支持与其他非甲骨文技术如Spring、Hibernate的集成,实现企业级应用的复杂需求。 总结来说,"Weblogic管理员指南"是深入了解和掌握WebLogic Server管理的宝贵资料,无论你是初学者还是经验丰富的管理员,...

Global site tag (gtag.js) - Google Analytics