浅谈Hibernate缓存机制:一级缓存、二级缓存

本文详细探讨了Hibernate的缓存机制,包括一级缓存和二级缓存的作用和使用方法。一级缓存是Session级别的,数据在Session关闭后消失;二级缓存是SessionFactory级别的,提供全局缓存。通过配置和注解可以启用二级缓存,提高数据库访问性能。总结了适合和不适合放入二级缓存的数据类型。
摘要由CSDN通过智能技术生成

一:什么是缓存机制

   当我们频繁访问数据库时,尤其像Hibernate持久层框架,会导致数据库访问性能降低,因此我们期望有一种机制能提供一个"缓存空间",我们将需要的数据复制到这个"缓存空间",当数据查询时,我们先在这个"缓存空间"里找,如果没有,我们再去数据库查找,这样就减少了与数据库的访问,从而提高了数据库访问性能,这就是缓存机制。

二:Hibernate缓存机制

1:一级缓存:Hibernate默认的缓存机制,它属于Session级别的缓存机制,也就是说Session关闭,缓存数据消失。

2:二级缓存:属于SessionFactory级别的缓存,二级缓存是全局性的,应用中的所有Session都共享这个二级缓存。

  二级缓存默认是关闭的,一旦开启,当我们需要查询数据时,会先在一级缓存查询,没有,去二级缓存,还没有,好,咱们再去数据库,因此缓存机制大大提高了数据库的访问性能。

三:一级缓存用法

  当程序调用Session的save()方法持久化对象时,程序并不会立刻将这个数据搞到数据库,而是将它放在了Session的一级缓存中,Session的get()、load()方法也是,当我们调用Session的flush()时,数据才会一并存到数据库。

下面例子演示一级缓存用法:

1:持久化类 News.java

@Entity
@Table(name="new_inf")
public class News {
	@Id
	@Column(name="new_id")
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private Integer id;
	private String title;
	private String content;
	//省略set、get方法

2:数据库表 new_inf


3:主程序 NewManager.java

public class NewManager {
	public static void main(String[]args){
		NewManager newManager=new NewManager();
		newManager.secondCache();
	}
	public void secondCache(){
		//获取Session
		Session session=HibernateUtil.currentSession();
		//开启事务
		Transaction tx=session.beginTransaction();
		//获取数据
		List list=session.createQuery("from News news")
				.list();
		//将数据放入session缓存即一级缓存
		News news =(News) session.load(News.class, 2);
		System.out.println(news.getTitle()+"\t
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值