Hibernate中session的操作

本文详细介绍了Hibernate Session中的常用方法,包括查询方法get和load,添加方法save,清除方法Evict和Clear,以及Flush方法。通过解析这些方法的执行顺序和特性,帮助开发者更好地理解并利用Hibernate Session进行对象持久化操作。

Hibernate中的Session有多个方法,下面对Session的常用方法进行一下简单的介绍:

  查询方法get和load
    get方法:不支持lazy(延迟加载),查询数据不存在时返回null
    load方法:默认支持lazy(可以设置为不支持),查询数据不存在时返回objectNotFoundException异常。


  添加方法save
     session.save(obj)插入你实体类的对象。然后运用Hibernate的sql语句进行insert操作(未提交)。


  清除方法Evict和Clear
     session.evict(obj)会把指定的缓冲对象进行清除。
     session.clear()把缓冲区内的全部对象清除,但不包括操作中的对象。
   Flush方法
     session.flush()可以强制进行从内存到数据库的同步。

 

对这几个方法有所了解后,来看一下他们的执行顺序:

  (1)生成一个事务的对象,并标记当前的 Session 处于事务状态(注:此时并未启动数据库级事务)。

 
  (2)应用使用 session.save 保存对象,这个时候 Session 将这个对象放入 entityEntries 。


  (3)session.evict 将对象从 session会话中拆离,这时 session 会从 entityEntries 中将这个对象移出。

  
  (4)事务提交,需要将所有缓存 flush 入数据库, Session 启动一个事务,并按照 insert,update,……,delete 的顺序提交所有之前登记的操作。

  (注意:所有 insert 执行完毕后才会执行 update ,如需要控制操作的执行顺序,要善于使用 flush )

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值