如果为hibernate配置了二级缓存,如何查看缓存内容?

比如用jbosscache做二级缓存,如何才能看到二级缓存里的东东?
[b]问题补充:[/b]
还是不知道hibernate的二级缓存如何能得到,比如通过lookup之类。
直接get的话前提是取得cache,现在甚至连hibernate创建cacheService的配置是怎样都不清楚,更不知道按什么key来保存了
[b]问题补充:[/b]
啊,我用的是jbosscache1.4.。。。。。
我记得jboss的wiki上推荐hibernate3.3以后的版本使用jbosscache2-3
hibernate3.2用1.4
我是参考http://www.jboss.org/community/docs/DOC-12948做的
所以木有这个类,用TreeCache也不成
[b]问题补充:[/b]
public TreeCache(org.jboss.cache.TreeCache cache, String regionName...
构造函数的cache参数是我所得不到的。
我问题的关键也就是取得这个cache,而不是创建个新的
我有空查下源码ba,3q。

3个回答

[code="java"].
.
package org.hibernate.cache;
.
/**

  • Represents a particular region within the given JBossCache TreeCache. *
  • @author Gavin King */ public class TreeCache implements Cache, TransactionAwareCache { . private static final String ITEM = "item"; . public TreeCache(org.jboss.cache.TreeCache cache, String regionName, TransactionManager transactionManager) throws CacheException { this.cache = cache; this.regionName = regionName; this.regionFqn = Fqn.fromString( regionName.replace( '.', '/' ) ); this.transactionManager = transactionManager; } . public Object read(Object key) throws CacheException { try { return cache.get( new Fqn( regionFqn, key ), ITEM ); } catch (Exception e) { throw new CacheException(e); } } . public void put(Object key, Object value) throws CacheException { Transaction tx = suspend(); try { //do the failfast put outside the scope of the JTA txn cache.putFailFast( new Fqn( regionFqn, key ), ITEM, value, 0 ); } catch (TimeoutException te) { //ignore! log.debug("ignoring write lock acquisition failure"); } catch (Exception e) { throw new CacheException(e); } finally { resume( tx ); } } . } . .[/code]

以上是hibernate的源码。
Fqn: regionName.replace( '.', '/' )
key: ITEM = "item";
不用我多说了吧。

org.jboss.cache.Cache.get(Fqn fqn, K key)
or
org.jboss.cache.Cache.get(String fqn, K key)

key是class的full name
for instance:com.xx.xxx.xxxx.xxxxx.User

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问