`

hibernate二级和查询缓存使用

 
阅读更多
二级缓存

一。先导入解压后hibernate-release-4.2.8.Final\lib\optional\ehcache目录下的jar包
ehcache-core-2.4.3.jar
hibernate-ehcache-4.2.8.Final.jar
slf4j-api-1.6.1.jar

二。配置hibernate.cfg.xml
		<property name="hibernate.cache.use_second_level_cache">true</property>
		<property name="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</property> 
		<property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property>
		


三。拷贝下载包\hibernate-release-4.2.8.Final\project\hibernate-ehcache\bin项目目录下的ehcache.xml文件至项目根目录下

四。在实体类上加上@Cache注释
@Entity
@Cache(usage=CacheConcurrencyStrategy.READ_WRITE)
public class Student{
	private int id;
	private String name;
	private Set<Teacher> students =new HashSet<Teacher>();
	@Id
	@GeneratedValue
	public int getId() {
		return id;
	}
	@ManyToMany(mappedBy="students")
	public Set<Teacher> getStudents() {
		return students;
	}

	public void setStudents(Set<Teacher> students) {
		this.students = students;
	}

	public String getName() {
		return name;
	}
	public void setId(int id) {
		this.id = id;
	}
	public void setName(String name) {
		this.name = name;
	}
}



五,测试
public class OneToOneORMappingTest {
	public static void main(String[] args) {
		Configuration cfg = new AnnotationConfiguration().configure("/hibernate.cfg.xml");
		SessionFactory sf = cfg.buildSessionFactory();
		Session session = sf.openSession();
		session.beginTransaction();
		Student student =(Student) session.load(Student.class, 0);
		
		System.out.println(student.getName());
		session.getTransaction().commit();
		session.close();
		
		Session session2 = sf.openSession();
		session2.beginTransaction();
		//查询
		Student student2 =(Student) session2.load(Student.class,0);
		System.out.println(student2.getName());
		session2.getTransaction().commit();
		session2.close();
		sf.close();

	}

}



测试结果,只发出一条语句,输出两次结果
Hibernate: 
    select
        student0_.id as id1_0_0_,
        student0_.name as name2_0_0_ 
    from
        Student student0_ 
    where
        student0_.id=?
zhangsan
zhangsan



查询缓存
依赖二级缓存
一。配置hibernate.cfg.xml,打开查询缓存
<property name="hibernate.cache.use_query_cache">true</property>	


二。测试,查询时注意加setCacheable(true)
public class OneToOneORMappingTest {
	public static void main(String[] args) {
		Configuration cfg = new AnnotationConfiguration().configure("/hibernate.cfg.xml");
		SessionFactory sf = cfg.buildSessionFactory();
		Session session = sf.openSession();
		session.beginTransaction();
		//查询
		List<Student> result = session.createQuery("from Student").setCacheable(true).list();
		for(Student s :result){
			System.out.println(s.getName());
		}
		session.getTransaction().commit();
		session.close();
		
		Session session2 = sf.openSession();
		session2.beginTransaction();
		//查询
		List result2 = session2.createQuery("from Student").setCacheable(true).list();

		session2.getTransaction().commit();
		session2.close();
		sf.close();
		
	}
}



测试结果:只发出一条sql语句

分享到:
评论

相关推荐

    hibernate一级缓存、二级缓存和查询缓存

    **hibernate一级缓存、二级缓存和查询缓存** 在Java的持久化框架Hibernate中,缓存机制是提高应用程序性能的关键要素。缓存能够减少数据库的访问次数,提高数据读取速度,并且在一定程度上降低了系统的负载。本文将...

    hibernate一级缓存和二级缓存的区别与联系

    总结来说,Hibernate 的一级缓存和二级缓存都是为了提高数据访问效率,但它们在范围和并发控制方面有所不同。一级缓存是事务级别的,保证了数据的强一致性,而二级缓存提供了更多的灵活性,可以跨事务共享,但需要...

    hibernate开启二级缓存和查询缓存

    Hibernate 是一个流行的对象关系...通过以上内容,我们可以了解到 Hibernate 的二级缓存和查询缓存机制,以及如何在实际应用中配置和使用它们。合理利用这些缓存技术,能有效提升应用程序的性能,减轻数据库的压力。

    Hibernate二级缓存

    Hibernate二级缓存是一种提高应用程序性能的技术,它将数据存储在SessionFactory级别的缓存中,使得数据可以在不同的Session之间共享。这与一级缓存(Session级别)不同,一级缓存仅存在于单个Session生命周期内,当...

    hibernate一级和二级缓存配置与详解

    本篇将深入探讨Hibernate的一级缓存和二级缓存,以及查询缓存的配置和使用。 ### 一级缓存 一级缓存是Hibernate默认提供的缓存,它是Session级别的,每个Hibernate Session都有一个私有的、本地的一级缓存。当我们...

    Hibernate一级缓存、二级缓存以及查询缓存实例

    本文将深入探讨Hibernate的一级缓存、二级缓存以及查询缓存,通过具体的实例来阐述它们的工作原理和使用方法。 首先,我们从一级缓存开始。一级缓存是Hibernate默认提供的缓存,它是每个Session级别的,也被称为...

    hibernate二级缓存实例

    总的来说,"hibernate二级缓存实例"是一个很好的学习资源,它可以帮助我们理解二级缓存的工作机制,掌握如何在项目中配置和使用,以及注意潜在的问题和优化策略。通过实践,我们可以更好地运用这一技术,提升Java...

    hibernate 二级缓存详解

    在Hibernate中,二级缓存可以使用不同的提供商,例如Ehcache和OSCache。配置Ehcache作为二级缓存提供商,需要在Hibernate的配置文件中设置`hibernate.cache.provider_class`为`...

    Spring集成的Hibernate配置二级缓存

    本文将详细探讨如何在Spring集成的Hibernate环境中配置二级缓存,以及其背后的原理和实践。 首先,我们需要了解什么是二级缓存。在Hibernate中,一级缓存是每个Session内部的缓存,它自动管理实体的状态,当一个...

    Hibernate一级缓存和二级缓存

    **二、Hibernate二级缓存** 二级缓存是SessionFactory级别的,跨越了多个Session,可以被多个线程共享。它通常由第三方插件如EhCache、Infinispan等提供。二级缓存分为以下几种类型: 1. **集合缓存**:用于存储...

    hibernate二级缓存示例源码

    综上所述,通过学习`hibernate二级缓存示例源码`,我们可以了解到如何在实际项目中配置和使用Hibernate二级缓存,从而提升系统的性能。在实际应用中,应结合具体场景选择合适的缓存策略,以达到最佳的性能优化效果。

    springboot+jpa(hibernate配置redis为二级缓存) springboot2.1.4

    通过以上步骤,我们就成功地在Spring Boot 2.1.4.RELEASE项目中配置了使用Redis作为Hibernate二级缓存的环境。这将显著提升数据库查询效率,减少对数据库的压力,尤其在高并发场景下,效果尤为明显。记得在实际生产...

    为Spring集成的Hibernate配置二级缓存

    二级缓存的使用可以显著提升系统性能,特别是在频繁查询相同数据的情况下。然而,需要注意的是,虽然缓存可以提高效率,但也要考虑数据的一致性和并发控制问题,避免出现脏读、不可重复读等问题。因此,在实际应用中...

    day37 05-HIbernate二级缓存:一级缓存更新同步到二级缓存及二级缓存配置文件

    `hibernate.cache.use_query_cache`和`hibernate.cache.use_second_level_cache`分别开启了查询缓存和二级缓存。最后,通过`class-cache`元素配置了`EntityClass`的缓存策略,这里使用了"read-write",表示读写操作...

    hibernate二级缓存包

    综上所述,Hibernate二级缓存配合Ehcache使用,能够有效提升Java应用的性能,降低数据库压力,同时Ehcache提供的丰富功能和灵活性使其成为Java缓存领域中的热门选择。在实际项目中,正确配置和使用Ehcache,能够为...

    Hibernate 二级缓存

    Hibernate 二级缓存

    Hibernate 二级缓存 总结整理

    在处理大数据量或高并发的场景下,为了提高性能和减少数据库负载,Hibernate 提供了二级缓存机制。本文将深入探讨Hibernate的二级缓存,并结合相关源码进行解析。 ### 一、一级缓存与二级缓存 1. **一级缓存...

    hibernate5.1二级缓存包

    Ehcache 是一个广泛使用的开源缓存解决方案,它支持本地缓存和分布式缓存,与 Hibernate 集成方便,可以提供高效的二级缓存服务。Infinispan 则是一个更强大的内存数据网格,不仅提供缓存功能,还支持数据分布式存储...

    Hibernate 一级缓存和二级缓存的区别

    Hibernate 一级缓存和二级缓存的区别

Global site tag (gtag.js) - Google Analytics