《深入浅出Hibernate》读书笔记4——脏数据
2008-04-25 19:36
204 查看
脏数据不是废弃或无用的数据,而是指一个数据对象所携带的信息发生了改变之后的状态。
Transaction tx = session.beginTransaction();
TUser user = (TUser)session.load(TUser.class,new Integer(1));
user.setAge(30);
//此时user 变成脏数据
tx.commit();
脏数据检查的策略有两种:
1、数据对象监控:就是采取拦截器
2、数据版本比对:数据提交的时候将提交数据与之前版本比对
Hibernate 采取的是第二种检查策略。
hibernate 判断一个对象是否需要保存的原理:利用属性的 unsaved-value,比如 id 还没填入数据库之前的 unsaved-value 为 null
例子:
我们加载了一个 user 对象,同事也加载了它的 addresses 属性,里面有3个address对象,然后你加了一个address对象,新增加的 address 对象的 id 值跟我们设定的 unsaved-value(null) 相同,hibernate 视其为未保存,并生成 insert 执行
疑问:如果原有对象改变,这样 id 是有的,是不是hibernate 就不进行保存呢?
回答:上面讨论的保存实际上是 insert ,update 大家不用关心,事物提交的时候 hibernate 会自动遍历找出变化的地方,并 update 的
Transaction tx = session.beginTransaction();
TUser user = (TUser)session.load(TUser.class,new Integer(1));
user.setAge(30);
//此时user 变成脏数据
tx.commit();
脏数据检查的策略有两种:
1、数据对象监控:就是采取拦截器
2、数据版本比对:数据提交的时候将提交数据与之前版本比对
Hibernate 采取的是第二种检查策略。
hibernate 判断一个对象是否需要保存的原理:利用属性的 unsaved-value,比如 id 还没填入数据库之前的 unsaved-value 为 null
例子:
我们加载了一个 user 对象,同事也加载了它的 addresses 属性,里面有3个address对象,然后你加了一个address对象,新增加的 address 对象的 id 值跟我们设定的 unsaved-value(null) 相同,hibernate 视其为未保存,并生成 insert 执行
疑问:如果原有对象改变,这样 id 是有的,是不是hibernate 就不进行保存呢?
回答:上面讨论的保存实际上是 insert ,update 大家不用关心,事物提交的时候 hibernate 会自动遍历找出变化的地方,并 update 的
相关文章推荐
- 【编程珠玑】读书笔记 第三章 数据决定程序结构
- 《JAVASCRIPT:THE COMPLETE REFERENCE》读书笔记 数据类型与变量
- 读书笔记一:Windows 2000的约定和数据类型
- [转]《高性能MySQL》读书笔记--Schema与数据类型优化
- 数据挖掘读书笔记--第三章:数据预处理
- Cpp Concurrency In Action(读书笔记2)——线程间共享数据
- 【读书笔记】】iOS-数据交换格式
- 《第一行代码--Android》读书笔记之数据存储
- Go Programming Blueprints 读书笔记(谈到了nsq/mgo处理数据持久化,可是业务逻辑不够复杂)
- 《大话数据结构》读书笔记(一)——数据结构基础和算法
- 【读书笔记】【MySQL高性能】Schema与数据类型优化
- 2012年1月12日 星期四(oracle读书笔记,oracle体系架构之数据字典)
- 《深入浅出Hibernate》读书笔记(1)——实体对象生命周期
- 《深入浅出Hibernate》读书笔记(9)——Session管理
- 【读书笔记-数据挖掘概念与技术】数据预处理
- 大数据管理:数据集成的技术、方法与最佳实践 读书笔记二
- 读书笔记2:利用Python进行数据分…
- 【读书笔记】iOS-简单的数据驱动程序
- 【读书笔记-数据挖掘概念与技术】离群点检测
- MYSQL必知必会读书笔记 第五章 排序检索数据