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

如何使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 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]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 求chat4.0解答一道线性规划题,用lingo编程运行,第一问要求写出数学模型和lingo语言编程模型,第二问第三问解答就行,我的ddl要到了谁来求了
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥15 maple软件,用solve求反函数出现rootof,怎么办?
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果