在hibernate使用中,对于session的使用时必不可少的,这一节我们来简单谈谈session和object!
对象的三种状态:
瞬时对象(Transient Objects):使用new 操作符初始化的对象不是立刻就持久的,它的状态是顺势的,只要不引用这些对象,他们的状态将会丢失,并由垃圾回收机制回收。
持久化对象(Persist Objects):持久实例是任何就有数据库表示的实例,换句话说就是对象数据已经写入数据库了,
离线对象(Detached Objects):session关闭后,持久化对象就编程路线对象,离线对象就不能在于数据库保持同步,他们不再受hibernate管理。
下面的图是hibernate对象的生命周期图:

图中很明确的表示了对象之间的转化,当new操作符创建对象时,对象是瞬时对象,对瞬时对象进行save等操作之后,对象将会变为持久化对象,当session关闭或清理的时候,对象就会变为离线对象。
Session 简单使用:
Session 简单使用:
session:又称会话控制,用于存储会话过程中需要存储的对象。在对对象进行操作之后,需要使用session将对象持久化到数据库,这里我们涉及到的session的常用方法有:save,flush evict,clear 方法
save:将数据保存到session中
flush:清除缓存,使缓存与数据库中数据保存一致
evict:将对象逐出session,会报错
clear:在清理缓存之前把缓存清除了,所以数据不会持久化到数据库
Ps:在evict之前显示调用flush 方法,session.commit就不会出现问题了。