Hibernate中Session的几个方法介绍



get load

1:get
public Object get(Class clazz, Serializable id) 两个条件 什么样的类, id是多少 就可以拿到类了
根据主键得到类,只是查询操作一般不用管事务
局限性:get方法只能通过id拿到对象 其他查询可以用query hql  和criteria方式 

2:load  
public  Object load(Class clazz, Serializable id)
和get 相似,使用的频率低一些,和get的区别,不会立即访问数据库,等真正使用要查找的类的时候,才会去访问数据库 load返回的永远不为null, 会是一个代理对象
实现细节: 它自己new 了一个继承至需要查询的对象,我们的pojo类不能是final的也是这个原因。
懒加载:


save persist

3,persist 
保存 同 save一致 
唯一区别: 在不开启事务的时候,persist不产生insert语句,数据库更没有数据了。
4,save
不开启事务时,会产生insert语句,数据库里没有数据。


savaOrUpdate  update  merge 
当我们要保存一个对象,却不知道数据库里有没有的时候,不知道它是瞬时对象,还是脱管对象,就可以用
5 saveOrUpdate
hibernate会自己根据ID(判断ID是否有值,瞬时态的ID是没有值的 整形的id为0是瞬时态  String 的ID为null是瞬时态  可以通过映射文件中的 id 节点中的 unsaved-value 进行配置)和version的值判断对象是否是瞬时对象还是脱管对象,选择调用save 还是update
另外 调用saveOrUpdate后 对象会变成持久态,而merge还是托管态

6.update 
更新对象,如果没有记录会出现异常
当对象处于脱管状态的时候,就可以调用更新,然后更新到数据库

7:merge
将对象更新,调用之后还是托管态。



对象状态转移图:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值