Hibernate对象的3种状态

来源:互联网 发布:内地网络恐怖片 编辑:程序博客网 时间:2024/05/17 23:32
Hibernate对象的3种状态:1,临时状态(Transient):与数据库没有对应,跟Session没有关联。一般是新new出的对象。2,持久化状态(Persistent):对象在Session的管理之中,最终会有对应的数据库记录。特点:有ID,并且对对象的修改会同步到数据库。3,游离状态(Detached,又叫脱管状态):数据库中有对应记录,但对象不在Session管理之中。修改此状态对象时数据库不会有变化。Session中的对象是:内存中的对象的引用,Session关闭后,内存中的对象还存在。a)transient:内存中一个对象,没ID,缓存中也没有b)persistent:内存中有,缓存中有,数据库有c)detached:内存有,缓存没有,数据库有对象状态间的转换:save():把临时状态变为持久化状态(交给Sessioin管理),生成:insert into ...语句update():把游离状态变为持久化状态,生成:update ...saveOrUpdate():把临时或游离状态转为持久化状态,生成:insert into 或 update ...语句注:本方法是根据id判断对象是什么状态的:如果id为原始值(对象的是null,原始类型数字是0)就是临时状态,如果不是原始值就是游离状态。get():获取数据,是持久化状态,生成:select ... where id=? 语句,并且会马上执行SQL语句load():获取数据,是持久化状态,生成:select ... where id=? 语句,是否马上执行SQL语句,取决于lazy的取值。delete():从数据库里删对象,缓存也会被清除,把持久化转为临时状态,生成:delete ... 语句evict()、clear()、close()把持久化状态转换为游离状态

0 0
原创粉丝点击