浏览 11853 次
锁定老帖子 主题:JCS 使用
该帖已经被评为精华帖
作者 正文
   发表时间:2003-09-16  
JCS就是一个通用的对象缓冲,Hibernate可以使用JCS来缓冲查询结果集。如果要对一个持久对象做缓冲,就是在hbm的class标签前面加一行:

<jcs-cache usage="read-only"/>

<jcs-cache usage="read-write"/>

这是一个只读缓冲,只对Read操作做缓冲,也可以用read-write,对update也进行缓冲,不过不能用在集群环境中。

例如:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping SYSTEM "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">

<hibernate-mapping>
    <class name="com.fankai.Cat" table="cat">
        <jcs-cache usage="read-only"/>
        <id name="id" unsaved-value="null">
            <generator class="uuid.hex"/>
        </id>
        <property name="name" length="16" not-null="true"/>
        <property name="sex" length="1" not-null="true"/>
        <property name="weight" />
    </class>
</hibernate-mapping>



cache.ccf是JCS的配置文件,主要配置一下:
jcs.default.cacheattributes.MaxObjects=5000 (缓冲区容纳对象大小)
jcs.default.elementattributes.MaxLifeSeconds=240(最大缓冲时间)

除了对整个持久对象,也可以对对象的集合属性进行缓冲,那就是在property标签下面写就OK了。

第一次读取数据的时候,不论用List还是Iterator都会把数据填充到缓冲区内,以后碰到相同的查询结果,就不去数据库取,直接到JCS缓冲区取,但是只有Iterator才能去缓冲区取数据,List总是直接从数据库取,无法利用缓冲区。
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics