Hibernate一级缓存
2023-09-14 09:02:01 时间
Hibernate的一级缓存就是指session缓存。
actionQueue它是一个行列队列,它主要记录crud操作的相关信息
persistenceContext它是持久化上下文,它其实是真正缓存。
在session中定义了一系列的集合来存储数据,它们构成session缓存。
只要session没有关闭,它就会一直存在。
当我们通过hibernate中的session提供的一些API例如 save get update等进行操作时,就会将持久化对象保存到session中,当下一次在去查询缓存中具有的对象(OID值来判断),
就不会去从数据库查询,而是直接从缓存中获取。
Hibernate的一级缓存存在的目的就是为了减少对数据库访问。在hibernate中还有一个二级缓存,它是SessionFactory级别缓存。
// 测试一级缓存
@Test
public void test3() {
// 1.得到session
Session session = HibernateUtils.openSession();
session.beginTransaction();
Customer c = session.get(Customer.class, 1); // 查询id=1的customer对象,如果查询到,会将c存储到一级缓存中。
Customer cc = session.get(Customer.class, 1); // 会从一级缓存
// 中查询,而不会向数据库在发送sql
// 2.事务提供,关闭
session.getTransaction().commit();
session.close();
}
演示一级缓存的存在
HibernateUtils工具类
public class HibernateUtils {
private static Configuration config;
private static SessionFactory sessionFactory;
static{
config=new Configuration().configure();
sessionFactory=config.buildSessionFactory();
}
public static Session openSession(){
return sessionFactory.openSession();
}
}
持久化对象具有自动更新数据库能力
// 持久化对象具有自动更新数据库能力
@Test
public void test4() {
// 1.得到session
Session session = HibernateUtils.openSession();
session.beginTransaction();
Customer c = session.get(Customer.class, 1); // 查询id=1的customer对象,如果查询到,会将c存储到一级缓存中。
c.setName("tom"); // 操作持久化对象来修改属性
// 2.事务提供,关闭
session.getTransaction().commit();
session.close();
}
相关文章
- JavaWeb_(Spring框架)Spring整合Hibernate
- Hibernate中使用Criteria查询及注解——(Emp.hbm.xml)
- hibernate正向生成数据库表以及配置——Teacher.java
- hibernate正向生成数据库表以及配置——Teacher.java
- hibernate正向生成数据库表以及配置——Student.java
- hibernate正向生成数据库表以及配置——hibernate.cfg.xml
- Hibernate基本概念 (2)
- Hibernate缓存
- Hibernate缓存机制
- hibernate缓存清除(转)
- Hibernate+maven+eclipse 实现自动建表
- spring hiberante 集成出现异常 java.lang.ClassNotFoundException: org.hibernate.engine.SessionFactoryImplementor
- Hibernate 的一级缓存和二级缓存总结
- atitit.atitit.hb many2one relate hibernate 多对一关联配置..
- atitit。 hb Hibernate sql 查询使用
- paip. 提升性能---hibernate的缓存使用 总结
- hibernate中的java对象有几种状态,其相互关系如何(区别和相互转换)。