keweishang 2009-05-26 16:42
浏览 612
已采纳

提问:Hibernate一级缓存的生命周期是多长?

我最近读了一本《Java Persistence with Hibernate》.
我有一个关于Hibernate的一级缓存的生命期的疑问,
书上说hibernate的一级缓存是unit of work(可能是transaction?)级别的,但是又说一个persistence context(session)内有一个一级缓存。
1.但是我不明白unit of work指的是什么,请问是transaction吗?
2.对于一级缓存,是在一个transaction结束之后就消失了,还是在一个session对象被垃圾回收之后才结束呢?
3.还有一个问题我也很困惑,就是,如果我现在的线程1的一级缓存内已经有读出来的数据,然后线程2修改了数据库的内容,那么线程1的一级缓存内的数据就和数据库的数据不一样了,这样当线程1的程序读一级缓存内的数据的时候,读出来的不就是dirty的数据了吗?这个问题应该如何解决呢?

谢谢了!:)

  • 写回答

2条回答 默认 最新

  • tianyangqi 2009-05-27 11:38
    关注

    本人才疏学浅,试着回答一下吧。
    hibernate的缓存分为session和sessionFactory两个缓存。而sessionFactory又分为内置缓存和外置缓存。session缓存就是所谓的一级缓存,是不可以卸载,也不可以设置的,而sessionFactory得外置缓存就是所谓的二级缓存,是可以设置的。既然session缓存就是一级缓存,那么hibernate的一级缓存的生民周期就应该是session吧,而不是一个事务结束后就结束。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算