RSS
热门关键字:  java  Ajax  JSP  JSF  Struts
当前位置 : 首页>Hibernate>列表

操纵持久化对象

来源:Java之道 作者: 时间:2007-10-18 点击:
    Sessionsave()方法:使用一个临时对象转变为持久对象。
方法签名:public Serializable save(Object object) throws HibernateException; 它完成以下操作:
1)      把持久化类的实例加入到缓存中,使它变为持久化对象。
2)      选用映射文件指定的标识符生成器为持久化对象分配唯一的OID。
3)      计划执行一个insert语句,把持久化对象当前的属性值组装到insert 语句(SQL DML)中。值得注意的是,save()方法并不是立即执行SQL insert语句。只有当Session清理缓存时,才会执行SQL insert语句。
另外,需要注意的是:Hibernate通过持久化对象的OID来维持它和数据库相关记录的对应关系。所以当持久化的实例处于持久化状态时,不允许程序随意修改它的OID。其实,无论java对象处于瞬时状态、持久化状态还是脱管状态,程序都不应该修改它的OID。
4.2.    Sessionupdate()方法:使一个脱管对象转变为持久化对象。
方法签名:public void update(Object object) throws HibernateException; 它完成以下操作:
1)      把脱管对象重新加入到Session缓存中,使它变为持久化对象。
2)      计划执行一个update语句。值得注意的是,Session只有在清理缓存的时候才会执行update语句,并且在执行时才会把持久化对象当前的属性值组装到update语句中。
4.3.    SessionsaveOrUpdate()方法:
       方法签名:public void saveOrUpdate(Object object) throws HibernateException ; saveOrUpdate()方法同时包含了save()与update()方法的功能,如果传入的参数是瞬时对象,就调用save()方法;如果传入的参数是脱管对象,就调用update()方法;如果传入的参数是持久化对象,方法就直接返回。那么,saveOrUpdate()方法如果判断一个对象处于瞬时状态不是脱管状态呢?如果满足以下情况之一,Hibernate就把它作为临时对象:
1)      Java对象的OID取值为null。
2)      Java对象具有version属性,并且取值了null。
3)

最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册
Google Adsense
相关文章