7-Hibernate 持久化对象

1-Session的load()方法试图从数据库中加载一个持久化对象的时候,Session先判断缓存中是否已经存在这个对象,如果存在就不需要再到数据库中检索。当调用Session的save()方法持久化对象时,该持久化对象被加入到Session的缓存中。

2-当缓存中持久化对象的状态发生了变化,Session并不会立即执行相关的SQL语句。这使得Session能够把几条相关的SQL语句合并为一条SQL语句,以便减少访问数据库的次数。 

3-当Session清理缓存时,通过比较对象的当前属性与它的快照。Session能够判断对象哪些属性发生了变化。

4-Session清理缓存时,执行SQL语句的顺序:

    4.1-insert

    4.2-update

   4.3-delete

   4.5-针对集合元素的删除,更新,插入

   4.6-对集合的插入

5-Session清理缓存的时间点:

    5.1- net.sf.hibernate.Transaction.commit( ),先清理缓存,再提交数据库事务。

    5.2- Session.find( ) 或者 Session.iterate( )时,如果持久化对象属性发生变化,则会先清理缓存。

    5.3- Session.flush( ) 显式调用

如果对象使用native生成器来生成id时,当调用Session.save( )保存该对象时,立即执行插入的insert语句。

6- Session.flush( )方法进行缓存清理的时候,会执行一系列的SQL语句,但不会提交事务。

    Session.commit( )方法会先调用flush( )方法,然后提交事务。提交事务意味着对数据库所做的更新被永久地

    保存下来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值