【Hibernate】Hibernate 操作对象

Hibernate 中的对象状态 :

临时状态(transient):刚用new 语句创建,还没有被持久化,并且不处于Sesssion 的缓存中。处于临时状态的Java 对象被称为临时对象。
持久化状态(persistent):已经被持久化,并且加入到Session 的缓存中。处于持久化状态的Java 对象被称为持久化对象。
删除状态(removed):不再处于Session 的缓存中,并且Session 已经计划将其从数据库中删除。处于删除状态的Java 对象被称为删除对象。
游离状态(detached):已经被持久化,但不再处于Session 的缓存中。处于游离状态的Java 对象被称为游离对象。




Session 常用方法:

1,save()方法将一个临时对象转变成持久化对象;
2,load()方法与get()方法
都是根据OID 从数据库中加载一个持久化对象。
区别1:假如数据库中不存在与OID 对应的记录,Load()方法会抛出异常,而get()方法返回null;
区别2:load 方法默认采用延迟加载策略,get 方法采用立即检索策略;


*什么是延迟加载

Class c=(Class)session.load(Class.class, Long.valueOf(1));
System.out.println(c.getStudents());
这里使用load方法获得的c只是一个引用,c里的属性值都是空的,到真正需要用到它的属性时才会加载,这里在执行

System.out.println(c.getStudents());时才会加载属性值;

而如果是使用Get方法的话,在得c对象时,它的属性值已经检索出来了。

在需要delete某个对象时,用load方法某个对象,性能更好。


2,update()方法将一个游离对象转变为持久化对象;
3,saveOrUpdate()方法包含了save()和update()方法;
4,merge()方法,合并对象;(如果在session缓存中有与某个OID重复的对象,此时使用update()的话就会报错,这时使用merge()就是将两个对象的属性合并后再更新)
5,delete()方法,删除对象;




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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值