hibernate识别脏数据策略
2013-02-18 17:51
134 查看
脏数据检查策略一般有两种:
1. 数据对象监控
数据对象监控的实现方式,大体上是通过拦截器对数据对象的设置方法(setter)进行拦截,拦截器的实现可以借助Dynamic Proxy或CGlib实现。一旦数据对象的设置方法被调用(通常这也就意味着数据对象的内容发生变化),则将其标志为“待更新”状态,之后在数据库操作时将其更新到对应的数据表。
2. 数据版本比对
在持久层框架中维持数据对象 的最近读取版本,当数据提交时将提交数据与此版本进行比对,如果 发生变化 则将其同步到数据库相应的库表。
hibernate 使用的是第二种策略。
实例:
TUser user = (TUser)session.load(TUser.class,new Integer(1));
Transaction tx = session.beginTransaction();
user.setName("111");
tx.commit();
1. 加载
2.启动事务
3.设值
4.提交;
提交事件随即调用Session.flush:
public void commit() throws HibernateException{
......
if(session.getFlushMode() != FlushMode.NEVER)
session.flush();
......
}
Sesson.flush()方法中,会完成两个主要任务:
public void flush() throws HibernateException{
......
flushEverything();//刷新所有数据
execute();//执行数据库SQL完成持久化操作
......
}
flushEverything会首先完成 一些预处理工作(如调用对应的interceptor、协同级联关系等);之后,即调用flushEntities方法对当前Session中的实体对象进行刷新,而这个过程也是脏数据判定的关键。
1. 数据对象监控
数据对象监控的实现方式,大体上是通过拦截器对数据对象的设置方法(setter)进行拦截,拦截器的实现可以借助Dynamic Proxy或CGlib实现。一旦数据对象的设置方法被调用(通常这也就意味着数据对象的内容发生变化),则将其标志为“待更新”状态,之后在数据库操作时将其更新到对应的数据表。
2. 数据版本比对
在持久层框架中维持数据对象 的最近读取版本,当数据提交时将提交数据与此版本进行比对,如果 发生变化 则将其同步到数据库相应的库表。
hibernate 使用的是第二种策略。
实例:
TUser user = (TUser)session.load(TUser.class,new Integer(1));
Transaction tx = session.beginTransaction();
user.setName("111");
tx.commit();
1. 加载
2.启动事务
3.设值
4.提交;
提交事件随即调用Session.flush:
public void commit() throws HibernateException{
......
if(session.getFlushMode() != FlushMode.NEVER)
session.flush();
......
}
Sesson.flush()方法中,会完成两个主要任务:
public void flush() throws HibernateException{
......
flushEverything();//刷新所有数据
execute();//执行数据库SQL完成持久化操作
......
}
flushEverything会首先完成 一些预处理工作(如调用对应的interceptor、协同级联关系等);之后,即调用flushEntities方法对当前Session中的实体对象进行刷新,而这个过程也是脏数据判定的关键。
相关文章推荐
- Hibernate面试题 --- Hibernate主键的生成策略(Oracle数据运用那种主键生成策略)
- Hibernate学习---第十二节:Hibernate之数据抓取策略&批量抓取
- hibernate之优化抓取(选择抓取策略之批量预抓取数据--实例2)
- Hibernate数据检索策略和.hbm.xml映射文件
- Hibernate学习---第十一节:Hibernate之数据抓取策略&批量抓取
- JPA hibernate spring repository pgsql java 工程(三):数据表分区与自动创建:策略
- Hibernate中的数据的获取策略(fetching)
- Spring + Hibernate 数据访问策略
- Spring + Hibernate 数据访问策略
- hibernate中update只更新部分字段,避免二次提交数据策略
- hibernate 级联删除策略(注解版、数据库版)
- hibernate之优化抓取(选择抓取策略之批量预抓取数据)
- Hibernate数据检索策略和.hbm.xml映射文件
- hibernate之优化抓取(选择抓取策略之批量预抓取数据--实例1)
- Hibernate数据缓存策略
- hibernate 级联删除策略(注解版、数据库版)
- PAST:基于对等网络节点协助的流媒体数据传输策略的研究与实现
- hibernate查询语句正确,查询不到数据问题
- Hibernate主键生成策略选择
- HIbernate二级缓存的缓存策略