Hibernate性能优化
来源:互联网 发布:网站建设.国风网络 编辑:程序博客网 时间:2024/05/18 12:02
hibernate的查询优化:
在hibernate中的Query的list() 和 iterate() 方法都可以执行HQL的查询,但是list()方法会直接的执行SQL语句访问数据库,
而iterate()方法则会根据主键的字段到一,二级缓存当中寻找是否有已经存在的相应的对象数据,如果有就加入到查询结果中,
没有找到才是额外的执行SQL查询语句。
应用级缓存:
缓存被应用进程内的所有事务共享,这些可能会并发的访问缓存,在这种情况下就需要采用事务级的隔离机制了。
在bibernate 中应用级缓存是由SessionFactory来实现的,所有同一由SessionFactory创建的Session对象共享此缓存,
在在个应用程序中,SessionFactory对象是单例的,程序启动后只会创建一个SessionFactory 会话工厂。
也就是也就是说所在访问同一个数据库的情况下,所有的Session可以共享此缓存中的资源对象。
hibernate 二级缓存:
hibernate 的二级缓存不应用或分布式范围的缓存。Session在进行数据查询操作时,首先在内部的一级缓存中进行查找,
如果一级缓存中没有找到想应用对象则进行二级缓存的查找,查找到就返回数据,如果没有找到就会操作数据库执行SQL语句。
hibernate 本身没有提供二级缓存的实现,而是为第三方的缓存提供了实现接口。缓存的实现有多种:
EHCache:作为应用范围内的缓存。
OSCache:作为应用范围内的缓存。
BOCache:人微言轻分布式范围内的缓存
在hibernate中使用EHCache二级缓存时首先要在配置文件中做如下的配置:
<property name="hibernate.cache.EhCacheProvider">true</property>
<property name="cache.provider_class">
</property>
<property name="hibernate.cache.use_query_cache">true</property>
同时还要编写配置文件"ehcache.xml"来针对缓存实现进行本身的配置。
<?xml version="1.0" encoding="UTF-8"?>
<ehcache>
<diskStore path="d:/cache"/>
<defaultCache
最后需要在映射文件指定映射实体的缓存策略:
<hibernate-mapping>
</hibernate-mapping>
缓存同步策略决定了数据对象在缓存中的存取规则,同时也使得缓存的调度遵循着正确的应用组事务隔离机制。
hibernate 提供了四种缓存同步策略:
read-only:只读,应用于不会发生改变的数据。
nonstrict-read-write:非严格读写,不保证缓存数据与数据库数据的一致性。
read-write:严格可读定,用于数据同步很严格的情况下。
transactional:事务型缓存。
查询缓存:
<property name="hibernate.cache.use_query_cache">true</property>
使用查询缓存,如果查询结果集中包含实体,二级缓存中内会存放实体OID。
如果查询部分属性,则二级缓存会存放所有的属性值。
绝大多数的查询并不能从查询缓存中受益, 所以hibernate 默认是不进行查询缓存的。
如果需要进行缓存,可调用Query.setCacheable(true)方法。这个调用会让查询在执行过程中时先从缓存
中查找想应的结果,若有取出,若无则将执行SQL操作并将返回的结果存放到缓存当中,供下一次调用。
- hibernate查询性能优化
- Hibernate 性能优化技巧
- hibernate之性能优化
- Hibernate性能优化
- Hibernate性能优化
- Hibernate性能优化
- Hibernate性能优化问题
- hibernate性能优化
- Hibernate 性能优化技巧
- Hibernate性能优化
- Hibernate性能优化
- Hibernate性能优化
- Hibernate性能优化
- Hibernate性能优化策略
- hibernate性能优化
- Hibernate性能优化
- hibernate性能优化
- Hibernate性能优化1
- Ubuntu12.04开机自动挂载windows分区
- 找到个不错的awk教程
- HTTP协议 (七) Cookie
- 一种简单而神奇的算法思路:分级组合(排列)法
- 写给原领导的团队建设建议书
- Hibernate性能优化
- 递归的原理和分析
- 比尔·盖茨在哈佛大学毕业典礼上的演讲
- ASP.NET实现TreeView的XML数据源绑定
- 用LCD1602实现简单的数字时钟
- 【安全软件教程※当心无线WEP被破解※】
- hdu 3561 Dp
- xml to array 方法
- MariaDB(mysql)中插入中文数据