随笔-57  评论-202  文章-17  trackbacks-0

      在Java语言中,对象之间的比较可以通过引用比较(==)和内容比较(equals)两种方式进行,而在Hibernate的实体对象的比较是通过主键值来比较,如果要实现自己的识别逻辑,则需要重写equals方法和hashCode方法。

      检查数据对象改变检查的一般策略有下面两种:
      1. 数据对象监控
         数据对象监控的实现方式,通过拦截器对数据对象的设值方法进行拦截。一旦数据对象的设置方法被调用,则将其标志为“待更新”状态,之后在数据库操作时将其更新到对应的库表。
      2. 数据版本对比
         在持久层框架中维持数据对象的最近读取版本,当数据提交时将提交数据与此版本进行比对,如果发生变化则将其同步到数据库对应的库表。

      Hibernate采取的是第二种检查策略。它采用一个内部数据结构"EntityEntry"保存对应实体类的状态信息。

      对于级联对象的更新,Hibernate将根据unsaved-value进行判定。首先Hibernate会取出目标对象的id。之后,将此值与unsaved-value进行比对,如果相等,则认为目标对象尚未保存,否则,认为对象已经保存,无需再进行保存操作。

posted on 2005-06-22 16:32 小米 阅读(5144) 评论(4)  编辑  收藏 所属分类: Hibernate

评论:
# re: 《深入浅出Hibernate》读书笔记(2)——实体对象识别 2005-08-03 10:25 | wang
wo men   回复  更多评论
  
# re: 《深入浅出Hibernate》读书笔记(2)——实体对象识别 2006-05-31 10:29 | pc
http://www.kpwang.com/jsp_java/200644155011.htm Java连接lotus的源代码
http://www.kpwang.com/jsp_java/200644154949.htm Java封装数据结果集
http://www.kpwang.com/jsp_java/200644154712.htm Java的垃圾回收机制详解和调优  回复  更多评论
  
# re: 《深入浅出Hibernate》读书笔记(2)——实体对象识别 2006-05-31 10:29 | pc
http://www.kpwang.com/jsp_java/200644165429.htm Java程序中的事件处理
http://www.kpwang.com/jsp_java/20064416536.htm Java多线程设计模式
http://www.kpwang.com/jsp_java/200644155359.htm Java程序如何穿透带有密码验证的代理  回复  更多评论
  
# re: 《深入浅出Hibernate》读书笔记(2)——实体对象识别[未登录] 2008-08-01 22:22 | moonandsun
详细点就更好了   回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: