Using JCS in Hibernate

03-09-11 xinxin2
Hi all,

I have a question about the JCS, since I haven't used it before, I don't know how it works.

We have a table in our database, and its data rarely changes, so it is good for caching. I tried to put <jcs-cache usage="read-write" /> to my .hbm.xml file, but I don't know how to test it to make sure its data is from cache not from database?

Thanks a lot!

yehs220
2003-09-12 09:02
设置hibernate.show_sql true

如果出现SQL语句,则说明是从数据库取得,

没有则是从CACHE(或者只是查询出id)

xinxin2
2003-09-12 22:26
Thank you yehs220 for replying.

I tried what you said, but it always show me the SQL statements, so that means the data is from database? I did use <jcs-cache usage="nonstrict-read-write"/> in my .hbm.xml, I do not know what is wong with it? If you have a chance, could you take a look,

P.S, someone told me to turn on log4j.logger.net.sf.hibernate.cache=debug, I also tried this, it showed me something like "Cache new", don't know if the cache has been used.

Here is my .hbm.xml file

*****************************************************

<?xml version="1.0"?>

<!DOCTYPE hibernate-mapping PUBLIC

"-//Hibernate/Hibernate Mapping DTD//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">

<hibernate-mapping>

<class name="com.hibernate.Alias" table="alias">

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

<composite-id name="id">

<key-property name="firm" column="firm"/>

<key-property name="userid" column="userid"/>

<key-property name="alias" column="alias"/>

</composite-id>

<property name="sub_client" column="sub_client"/>

<property name="update_ident" column="update_ident"/>

</class>

</hibernate-mapping>

<!-- parsed in 10ms -->

**********************************************************

Here is the code I load the object:

**********************************************************

public void listAlias() throws HibernateException

{

Session session = sessionFactory.openSession();

Iterator iter = session.iterate("from com.hibernate.Alias as alias");

while (iter.hasNext())

{

Alias myAlias = (Alias) iter.next();

System.out.println("-------client is----" + myAlias.getClient());

System.out.println("-------subclient is----" + myAlias.getSub_client());

session.evict(myAlias);

}

session.close();

}

**********************************************************

Main()

---------------------------------------------------------------------------------

hiberTest.listAlias();

hiberTest.listAlias();

----------------------------------------------------------------------------------

Thanks for helping!

xinxin2
2003-09-13 01:26
I found if I use session.load(.....), it will hit the cache, I don't know why iterator does not work here? anybody knows?

Thanks

猜你喜欢