hibernate总结一

*save方法 使一个临时对象转变成持久化对象

Session的save方法完成以下的操作:

(1)把对象(临时/游离)加入到缓存中,使它变为持久化对象

(2)选用映射文件指定的标识符生成器为持久化对象分配唯一的OID

(3)计划执行一条insert语句,把对象当前的属性值组装到insert语句中

*delete方法 用于从数据库中删除与Java对象对应的记录

   (1)如果传入的参数是持久化对象,Session就计划执行一个delete语句

   (2)如果传入的参数是游离对象,先使游离对象被Session关联,使它变为持久化对象,然后计划执行一个delete语句

   (3)如果传入的参数是临时对象,前提是必须人为的指定id,而且这个OID必须和数据库中的一条记录对应.

*update方法 一般而言,传递给update的对象要是处于游离状态的对象

  (1)如果要传入的参数是持久化对象,那么update方法就是多余的,因为hibernate的脏检查机制会自动根据属性值的变化向数据库发送

  一条update语句

  (2)如果传入的对象是临时状态,那么此时hibernate应该会抛出异常,因为hibernate在更新数据时,会根据对象的OID去

  数据库查找相应的记录并更新之,而在数据库中是没有记录与这个临时记录相关联的,因此hibernate会抛出异常,如果人为

  的给临时对象指定一个OID就该另当别论了

  (3)执行update方法的时候,Hibernate会首先把传入的对象放入Session的缓存中,

  使之持久化,然后计划执行一个update语句。Hibernate在生成sql语句的时候会根据对象的当前属性值来组装sql语句,

  也就是说,不管程序中修改了多少次属性值,在执行时只会执行一条update一句。

posted @ 2011-07-23 00:35  humeng126  阅读(212)  评论(0编辑  收藏  举报