ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码
当前位置:首页 >> 低调看直播体育app软件下载 >> 其他编程jrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播 >> 框架 day32 Hibernate,一级缓存,关联关系映射一对多,多对多

框架 day32 Hibernate,一级缓存,关联关系映射一对多,多对多(1/8)

来源:网络整理     时间:2016-05-21     关键词:Hibernate

本篇文章主要介绍了"框架 day32 Hibernate,一级缓存,关联关系映射一对多,多对多",主要涉及到Hibernate方面的内容,对于其他编程jrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播感兴趣的同学可以参考一下: 一级缓存概念*在 Session 接口的实现中包含一系列的 Java 集合, 这些 Java集合构成了Session缓存. 只要 Session 实例没有结束生...

一级缓存

概念

*在 Session 接口的实现中包含一系列的 Java 集合, 这些 Java集合构成了Session缓存

只要 Session 实例没有结束生命周期, 存放在它缓存中的对象也不会结束生命周期


*当session的save()方法持久化一个对象时,该对象被载入缓存,

以后即使程序中不再引用该对象,只要缓存不清空,该对象仍然处于生命周期中。

当试图get()、 load()对象时,会判断缓存中是否存在该对象,有则返回,此时不查询数据库。没有再查询数据库


*Session 能够在某些时间点, 按照缓存中对象的变化来执行相关的 SQL 语句, 

来同步更新数据库, 这一过程被称为刷出缓存(flush)


*一级缓存为session级别的缓存,既将数据保存session中。
*一级缓存功能为hibernate内置,不能设置取消,必须使用的。

*一级缓存为提高性能

* session提供 map容器,用于执行一些指定的操作时,进行相应PO对象缓存的。

默认情况下 Session 在以下时间点刷出缓存:

1.当应用程序调用 Transaction 的 commit()方法的时, 该方法先刷出缓存(session.flush()),然后在向数据库提交事务(.commit())

2.当应用程序执行一些查询操作时,如果缓存中持久化对象的属性已经发生了变化,会先刷出缓存,以保证查询结果能够反映持久化对象的最新状态

3.调用Sessionflush() 方法


一级缓存常见操作

1. flush它就是用于刷新一级缓存的。

2. clear 清空一级缓存中所有对象

3. evict 清空一级缓存中指定对象

4. refresh 它是使用数据库的数据同步一级缓存与快照 (重新查询数据库,更新快照和一级缓存

证明一级缓存存在

@Test
	public void demo01(){
		//证明:一级缓存
		Session session = H3Utils.getCurrentSession();
		session.beginTransaction();

		// 1 执行select ,将结果缓存到一级缓存
		Category category = (Category) session.get(Category.class, "142729-19960808-1231");
		System.out.println(category);
		//2 如果一级缓存有数据,将直接获取
		Category category2 = (Category) session.get(Category.class, "142729-19960808-1231");
		System.out.println(category2);

		session.getTransaction().commit();

	}

一级缓存的FlushMode


(设置缓存的flush模式)
session.setFlushMode(FlushMode.AUTO);

相关图片

相关文章