配置hibernate二级缓存,有几种方法
19.2.1. 缓存映射(Cache mappings)
类或者集合映射的“<cache>元素”可以有下列形式:
<cache
usage="transactional|read-write|nonstrict-read-write|read-only"
region="RegionName"
include="all|non-lazy"
/> usage(必须)说明了缓存的策略: transactional、 read-write、 nonstrict-read-write或 read-only。
region (可选, 默认为类或者集合的名字(class or collection role name)) 指定第二级缓存的区域名(name of the second level cache region)
include (可选,默认为 all) non-lazy 当属性级延迟抓取打开时, 标记为lazy="true"的实体的属性可能无法被缓存
另外(首选?), 你可以在hibernate.cfg.xml中指定<class-cache>和 <collection-cache> 元素。
这里的usage 属性指明了缓存并发策略(cache concurrency strategy)。
19.2.2. 策略:只读缓存(Strategy: read only)
如果你的应用程序只需读取一个持久化类的实例,而无需对其修改, 那么就可以对其进行只读 缓存。
这是最简单,也是实用性最好的方法。
甚至在集群中,它也能完美地运作。
<class name="eg.Immutable" mutable="false">
<cache usage="read-only"/>
....
</class>19.2.3. 策略:读/写缓存(Strategy: read/write)
如果应用程序需要更新数据,那么使用读/写缓存 比较合适。
如果应用程序要求“序列化事务”的隔离级别(serializable transaction isolation level),那么就决不能使用这种缓存策略。
如果在JTA环境中使用缓存,你必须指定hibernate.transaction.manager_lookup_class属性的值, 通过它,Hibernate才能知道该应用程序中JTA的TransactionManager的具体策略。
在其它环境中,你必须保证在Session.close()、或Session.disconnect()调用前, 整个事务已经结束。
如果你想在集群环境中使用此策略,你必须保证底层的缓存实现支持锁定(locking)。
Hibernate内置的缓存策略并不支持锁定功能。
<class name="eg.Cat" .... >
<cache usage="read-write"/>
....
<set name="kittens" ... >
<cache usage="read-write"/>
....
</set>
</class>
Hibernate的一级缓存与二级缓存的区别?
一级缓存就是Session级别的缓存,一个Session做了一个查询操作,它会把这个操作的结果放在一级缓存中,如果短时间内这个session(一定要同一个session)又做了同一个操作,那么hibernate直接从一级缓存中拿,而不会再去连数据库,取数据。
二级缓存就是SessionFactory级别的缓存,顾名思义,就是查询的时候会把查询结果缓存到二级缓存中,如果同一个sessionFactory创建的某个session执行了相同的操作,hibernate就会从二级缓存中拿结果,而不会再去连接数据库。
纯手打,希望能帮到你
java里hibernate的一、二级缓存是怎么回事?
一级缓存是session,二级缓存是SessionFactory。
二级缓存分为对象缓存和查询缓存(内置和外置缓存)。
用的时候,要在hibernate里设置,怎么设的不会。
。
。
。
应该就问这么多。
查询缓存就是预定义的sql语句。
hibernate框架的优缺点有哪些?什么时候才用二级缓存?
hibernate是基于ORM原理,将关系模型映射到域模型对象。
优点是对数据库操作进行了轻量级的封装,可以用面向对象的方式对数据库进行操作,减少了开发过程中和大量的sql语句打交道,是开发更为方便
虽然对数据库操作进行了封装,但也要有一定的数据库只是功底
不同的session不可以共享一级缓存但是可以共享二级缓存,也就是说当不同的session装载对象是会使用二级缓存。
开发中如果要开启二级缓存的话需要在hibernate.cfg.xml文件中进行配置
Hibernate 二级缓存如何设置?
<property name="hibernate.cache.use_second_level_cache">true</property>
<property name="hibernate.cache.provider_class"&.hibernate.cache.EhCacheProvider</property>
前一句是打开二级缓存,后一句是启用第三方缓存产品(可改变,上面eache是hibernate官方默认的第三方缓存产品)
缓存是否实用,要看你的需求,
如果你的系统,浏览的人数比较多,但是增删的比较少,缓存的功劳非常大
如果你的系统即时性非常强,那么缓存的命中率就比较低,同时更新数据时,hibernate需要额外提供资源维护缓存与数据的一致
hibernate框架的优缺点有哪些?什么时候才用二级缓存?
Hibernate有什么优势?
Hibernate 易于学习和使用。
正如我在上面提到的,在您可以使用它之前,您只需要了解几个简单、自我描述的配置文件。
它 非常灵活。
您可以在任何需要持久化服务的应用程序架构中使用 Hibernate。
您可以通过 Servlet 和/或 Enterprise Java Bean 在 Standard Java 应用程序、Enterprise Java 应用程序中使用它。
它也可以和 Spring 框架很好地集成。
它可以很好地向上扩展,因为它被设计为从底层一直到集群环境中工作。
通过类似 Lazy Initialization 的技术以及通过 CGLIB 运行时间字节代码生成库优化 Java 反射,最新版的 Hibernate 的性能也得到了加强。
Hibernate有什么缺点?
Hibernate 是另一个拥有自己的应用和维护周期的框架。
尽管有积极的社区支持,但是有时候缺乏专注于此产品的提供商也使得宣传应用此框架显得没有说服力。
什么时候才用二级缓存:如果应用中,检索的频率相当高,每次都要去检索数据库,代价可想而知。
此时就可以设置Hibernate的二级缓存,减少系统开销,提高应用的效率,减少客户端检索的响应时间。