关闭

《深入浅出Hibernate》读书笔记(2)——实体对象识别

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

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

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

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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:254305次
    • 积分:3850
    • 等级:
    • 排名:第8274名
    • 原创:112篇
    • 转载:64篇
    • 译文:0篇
    • 评论:52条
    文章分类
    最新评论