首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

(学习札记)Hibernate的一级缓存

2012-09-08 
(学习笔记)Hibernate的一级缓存1、只读需要加事务么?加事务会不会影响速度了????? 锁和不锁区别, 速度上没

(学习笔记)Hibernate的一级缓存

1、只读需要加事务么?加事务会不会影响速度了?

???? 锁和不锁区别, 速度上没有影响,建议加事务。

2、hibernate的缓存

???? 一级缓存——Session

???? 二级缓存——Cache Concurrency Strategy、 Query Cache、 Cache Provide

?

一级缓存

1、一级缓存就是Session(Map). 一个session生命长度与事务相对应,他是必要的,不能被关闭,并且他能保证一个事务中id号的(唯一),Map的key就是存放对象的主关键字。

2、无论进行对象的save(),update(), saveOrUpdate(),还是load(), find(), list(), iterate(),filter(),这些对象都会被放进缓存中(key, value),一旦flush方法调用,这些对象的状态将与数据库同步。

3、当你load100000个对象,则可能发生"OutOfMemoryException"异常。我们怎么能够使用Hibernate处理这种大量对象批量处理操作了?我们的观点是ORM不适合处理update、delete批量处理。如果你想进行这类操作,有一种更好的手段:使用数据库的存储过程 或者 直接使用SLQ UPDATE 和 Delete语句。如果你非得要用Hibernate进行大批量操作,一旦操作完成立马执行evict操作,释放缓存。(不要把所有的数据都放入缓存)

4、完成所有对象的evict操作,我们调用Session.clear()方法,一般很少用,但是用的时候,作用很大的。

热点排行