当前位置: 首页> 学习园地

新mg电子游戏手机版实训-Hibernate对象状态和一对多关系的实现-一级缓存操作-哈尔Java培训

2018-09-07 15:35:26更新

 

二、一级缓存

2.1 介绍

l 一级缓存:又称为session级别的缓存。当获得一次会话(session),hibernate在session中创建多个集合(map),用于存放操作数据(PO对象),为程序优化服务,如果之后需要相应的数据,hibernate优先从session缓存中获取,如果有就使用;如果没有再查询数据库。当session关闭时,一级缓存销毁。

2.2 一级缓存操作

2.2.1 证明一级缓存

@Test

public void fun1() {

Session session = HibernateUtil.openSession();

Transaction ts = session.beginTransaction();

// --------------------------------------------------------

User u1 = (User) session.get(User.class, 1); // 发送sql语句,取出数据,并封装对象

// 持久化的对象,存到了缓存中

User u2 = (User) session.get(User.class, 1); // 再次查询时,会从缓存中查找

// 不会再发送sql语句

User u3 = (User) session.get(User.class, 1); // 再次查询时,会从缓存中查找

// 不会再发送sql语句

 

System.out.println(u1 == u2);

System.out.println(u1 == u3);

 

// --------------------------------------------------------

ts.commit();

session.close();

}

 

 

释疑:

第一次调用get方法执行过程原理

 

第二次调用get方法获取同一对象执行过程原理(不查询数据库)