在 Hibernate 中,一级缓存有三个常见的操作,分别为刷出、清除和刷新操作,下面结合本章前面的案例演示这三种常见的操作。
1. 刷出(flush)
一级缓存刷出功能是指调用 Session 的 flush() 方法时会执行刷出缓存的操作。下面通过具体示例演示一级缓存的刷出功能。在 GoodsTest 类中添加一个名为 test4() 的方法,具体代码如下所示:
// 刷出
@Test
public void test4() {
Session session = HibernateUtils.getSession(); // 得到session对象
session.beginTransaction();
Goods goods = (Goods) session.get(Goods.class, 2);
goods.setPrice(5.5);
session.flush(); // 执行刷出操作,此时会发送update语句
session.getTransaction().commit();
session.close();
}
在 flush() 方法处设置断点,利用 Debug 模式运行程序。当程序停止在断点处时,控制台中会显示查询 Goods 对象时所发出的 select 语句。当程序向下执行完 session.flush() 语句时,控制台会输出 update 语句,如图 1 所示。