hzlhlove
hzlhlove
2012-09-27 10:35
采纳率: 100%
浏览 261
已采纳

如何使Hibernate中EhCache缓存的Key能够动态设置

您好!
我现在在Hibernate中用EhCache做缓存,hibernate在对对象操作时自动缓存数据,但是缓存的key为对象的主键,我现在想对这个key在缓存前加上一个标识,因为我想对hibernate进行多schema扩展,所以如果用hibernate自己的缓存策略,相同的对象在schema切换后可能主键相同,那么缓存就会出现问题。求大牛帮忙下。谢谢!

伪代码描述如下:

//前提,Schema1中已经缓存了主键为1的用户信息。
Session session = null;
User user = null;
//1、这里用Schema1创建Session,通过缓存获取主键为1的用户
session = Schema1.sessionFactory.openSession();
user = session.get(1);
session.close();

//2、这里用Schema2创建Session,通过缓存获取主键为1的用户,但是
//拿出来的用户信息却是Schema1中的主键为1的用户信息,所以我想
//在hibernate进行二级缓存时,对缓存key进行操作,添加标识。
session = Schema2.sessionFactory.openSession();
user = session.get(1);
session.close();
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • jinnianshilongnian
    jinnianshilongnian 2012-09-27 12:56
    已采纳

    1、hibernate二级缓存默认策略是单SessionFactory的。
    2、因此你创建了两个SessionFactory 则两套缓存无关。
    3、二级缓存的cache name默认是class的全限定类名;
    4、hibernate二级缓存 提供一个region的概念 可以使用region;
    [url]http://jinnianshilongnian.iteye.com/blog/1525884[/url]

    点赞 评论

相关推荐