Hibernate的快照
作用:提高效率手段2:减少不必要的修改语句发送
当实体对象变成持久态对象的时候,和数据库表关联后。在session中会保存两份数据的副本。
一份是缓存,一个是快照。
- 缓存的作用:用于提高查询的效率
- 快照的作用:用于更新数据,作对比使用。
快照的支持就是持久态对象直接可以通过直接修改属性值更数据库表的数据,不需要update方法。
public class CustomerDAOTest {
@Test
public void update(){
//1.获得数据库操作对象,session
Session session = HibernateUtils.getSession();
//2. Hibernate框架,操作(增删改)必须先开启事务才能操作
Transaction transaction = session.beginTransaction();
//3.创建一个实体类,并且封装数据
Customer c=session.get(Customer.class, 1L);
//持久态对象修改了属性,直接提交就可以更新到数据库里面
c.setCustName("网易");
//5.提交事务,如果出错自动回滚
transaction.commit();
//6.关闭
session.close();
}
}
注意:
1. hibernate从数据库查询数据后会返回ResultSet
2. 然后hibernate会将resultSet中的内容组装成对象(两个)
3. 组装后的两个对象会一个放入缓存中,一个会放入快照中
4. 然后把缓存对象返回给程序
5. 如果程序修改了缓存对象,然后事务提交到hibernate
6. 然后hibernate会对比缓存对象和快照对象,如果有变化就会同步到数据库,如果没有就算了