浏览 2733 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-10-15
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…. OK, 大功告成,成功将Coherence与Hibernate集成,Hibernate通过Coherence进行实体数据,查询数据的缓存。 Coherence企业级缓存(一) 特点 Coherence企业级缓存(二) QuickStart和编程 Coherence企业级缓存(三) 四种缓存类型 Coherence企业级缓存(四) 数据管理模式 Coherence企业级缓存(五)与Hibernate集成(1) Coherence企业级缓存(五)与Hibernate集成(2) Coherence企业级缓存(六) JMX 管理和监控 Coherence企业级缓存(七) 性能调优 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间: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网站上看看资料。 |
|
返回顶楼 | |