标签:demo 对象状态 提交 不同的 spring3 update 集合 book object
@Test
// 证明一级缓存的存在
public void demo3(){
// 1.创建Session
Session session = HibernateUtils.openSession();
// 2.开启事务
Transaction tx = session.beginTransaction();
// save方法可以向一级缓存中存放数据的.
/*Book book = new Book();
book.setName("JQuery开发");
book.setAuthor("张XX");
book.setPrice(45d);
Integer id = (Integer) session.save(book);
Book book2 = (Book) session.get(Book.class, id);
System.out.println(book2);*/
// 分别用get执行两次查询.
Book book1 = (Book) session.get(Book.class, 1);// 马上发生SQL去查询
System.out.println(book1);
Book book2 = (Book) session.get(Book.class, 1);// 不发生SQL,因为使用一级缓存的数据
System.out.println(book2);
// 3.提交事务
tx.commit();
// 4.关闭资源
session.close();
}
@Test
// 深入理解一级缓存结构:快照区:
public void demo4(){
// 1.创建Session
Session session = HibernateUtils.openSession();
// 2.开启事务
Transaction tx = session.beginTransaction();
// 获得一个持久态的对象.
Book book = (Book) session.get(Book.class, 1);
book.setName("Spring3开发");
// 3.提交事务
tx.commit();
// 4.关闭资源
session.close();
}
clear()/evict()/flush()/refresh()
:管理一级缓存.clear()
:清空一级缓存中所有的对象.evict(Object obj)
:清空一级缓存中某个对象.flush()
:刷出缓存.refresh(Object obj)
:将快照区的数据重新覆盖了一级缓存的数据.ALWAYS
:每次查询的时候都会刷出.手动调用flush.事务提交的时候.AUTO
:默认值.有些查询会刷出.手动调用flush.事务提交的时候.COMMIT
:在事务提交的时候,手动调用flush的时候.MANUAL
:只有在手动调用flush才会刷出.标签:demo 对象状态 提交 不同的 spring3 update 集合 book object
原文地址:https://www.cnblogs.com/haoworld/p/hibernate-yi-ji-huan-cun.html