Hibernate快照技术详解

  • 内容
  • 评论
  • 相关

通过《Hibernate一级缓存详解》的学习,读者对 Hibernate 的一级缓存已经有了一定的了解。为了确保一级缓存中的数据和数据库中的数据保持一致,在 Hibernate 框架中提供了快照技术。

Hibernate 向一级缓存中存入数据的同时,还会复制一份数据存入 Hibernate 快照中。当调用 commit() 方法时,会清理一级缓存中的数据操作),同时会检测一级缓存中的数据和快照区的数据是否相同。如果不同,则会执行 update() 方法,将一级缓存的数据同步到数据库中,并更新快照区;反之,则不会执行 update() 方法。

下面通过具体示例演示 Hibernate 快照技术的应用。在 GoodsTest 中添加一个名为 test3() 的方法,其代码如下所示:

// hibernate快照
@Test
public void test3() {
    Session session = HibernateUtils.getSession(); // 得到session对象
    session.beginTransaction();
    Goods goods = new Goods();
    goods.setName("钢笔");
    goods.setPrice(5.0);
    session.save(goods);    // 向一级缓存中存入session对象
    goods.setPrice(4.5);    // 提交价格
    session.getTransaction().commit();    //提交事务
    session.close();    //关闭资源
}

在上述代码中,创建了一个 Goods 对象,并为该对象的属性进行赋值。在执行 save() 方法时,会将数据保存到一级缓存中。接着修改对象的 price 属性值,提交事务并关闭 session 对象。

使用 JUnit 测试运行 test3() 方法后,控制台的显示结果如图 1 所示。

输出结果
图 1  输出结果

本文标题:Hibernate快照技术详解

本文地址:https://www.hosteonscn.com/5800.html

评论

0条评论

发表评论

邮箱地址不会被公开。 必填项已用*标注