论坛首页 Java企业应用论坛

最近在看Hibernate的缓存,有一点没搞清楚

浏览 12171 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-06-01  
我想问一下,hibernate在事务提交后一级缓存的实例是如何和二级缓存同步的?用到那些机制哪?
   发表时间:2007-06-01  
这个问题我也想搞清楚
0 请登录后投票
   发表时间:2007-06-01  
事务提交后,一级缓存中的数据会被更新到数据库,如果二级缓存设置为读写,那么这份数据会同时更新到二级缓存。
你问的问题相当于:事务提交后一级缓存中的数据怎么同步到数据库。
0 请登录后投票
   发表时间:2007-06-01  
不是的  一级缓存的数据,其实在h执行相关的save,insert的时候已经提交到数据库的脏数据里面了。
我想问的是一级缓存是利用什么机制 来同步二级缓存的,有谁知道吗?
0 请登录后投票
   发表时间:2007-06-01  
查询。
脏了丢掉/
0 请登录后投票
   发表时间:2007-06-01  
ellie4c 写道
不是的  一级缓存的数据,其实在h执行相关的save,insert的时候已经提交到数据库的脏数据里面了。
我想问的是一级缓存是利用什么机制 来同步二级缓存的,有谁知道吗?

你说hibernate在执行save操作时会提交数据到数据库,你在哪里看到的结论,你用的是什么数据库,支持事务吗,你不会用的mysql的myisam吧
0 请登录后投票
   发表时间:2007-06-01  
你的意思是不是指 拿一级缓存的PO去查数据库,如果返回对象的话则 更新数据库,如果没返回则 通知二级缓存 丢掉数据?是不是这样的?hibernate也是这样的马?
0 请登录后投票
   发表时间:2007-06-01  
你的意思是不是指 拿一级缓存的PO去查数据库,如果返回对象的话则 更新二级缓存,如果没返回则 通知二级缓存 丢掉数据?是不是这样的?hibernate也是这样的马?
0 请登录后投票
   发表时间:2007-06-01  
ellie4c 写道
你说hibernate在执行save操作时会提交数据到数据库,你在哪里看到的结论,你用的是什么数据库,支持事务吗,你不会用的mysql的myisam吧


这里的提交是脏提交,是提交到事务本身的数据空间里面,真正的提交是在执行tx.commit
0 请登录后投票
   发表时间:2007-06-01  
ellie4c 写道
你的意思是不是指 拿一级缓存的PO去查数据库,如果返回对象的话则 更新二级缓存,如果没返回则 通知二级缓存 丢掉数据?是不是这样的?hibernate也是这样的马?

第一,如果你的数据库支持事务,而且默认隔离级别是读写已提交的话(大部分数据库是这样),是不会出现什么脏数据的。可以仔细阅读一下事务和隔离级别,和不同隔离级别所能解决的情况。读写已提交就是解决脏读问题的
第二,一级缓存中存放的就是持久对象,那为什么要查数据库呢,看来你对hibernate管理的对象的3种状态理解不深刻,持久状态的对象就代表数据库中的记录
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics