Hibernate性能优化

来源:互联网 发布:ado.net mysql 编辑:程序博客网 时间:2024/06/07 01:51
Hibernate性能优化提高1. 缓存(Hibernate默认会用到缓存,用得好就能大大提高性能,用得不好就会影响到效率;缓存其实就是数据库数据在内存中的一个临时容器,将查询过得数据暂时放在这个容器中,下次如果还是查询一样的,就直接在该容器中取得,就不用再去数据库里查询了,这样间接性的提高了效率。):a)一级缓存;i.即在当前事务范围内的数据缓存;ii.就Hibernate 来讲,(一级缓存)事务级缓存是基于Session的声明周期实现的;b)二级(应用级)缓存;i.此缓存可由多个事务共享;ii.在Hibernate 中,应用级缓存由Session Factory实现;iii.  使用第三方缓存组件:EHcache (易 H  kei  奇)c)分布式缓存;i.即在多个应用实例,多个JVM间共享的缓存策略;2. get()和load()的区别:a)查询没有的数据,get()会返回null,load()会报错,抛出找不到的异常;b)Load()的效率比get()的效率高;c)Get()直接去数据库里面找,load()会先去混存的临时的容器里去找,没有就会去找代理对象,在没有才会去数据库里进行查询,查询后只返回一个代理对象,而get()是一定要返回一个真实对象;3.混存同步策略:a)Read-only :只读,对于不会发生改变的数据可使用;不会进行更新b)Nonstrict-read-write c)Read-write:严格的读写缓存;d)Transactional:事务性缓存;4.延迟加载:a)在有关联的持久类对象中,对一个对象进行的查询也会对另一个对象进行查询;b)所谓延迟加载就是当在真正需要数据的时候,才真正执行数据加载操作;c)Hibernate 3.X的lazy (延迟加载)默认值是true,需要注意;5.Hibernate 的悲观和乐观锁:a)Hibernate支持两种锁机制:i.“悲观锁(Pessimistic Locking)”ii.“乐观锁(Optimistic Locking)”b) 数据库里面用到的所有锁都是“悲观锁”;c) 从效率上讲“悲观锁”的效率不高;d) “乐观锁”在数据中有一种机制,多了一列就是版本号,乐观锁就是靠版本数据机制实现的;当对数据进行不断的操作时,乐观锁也会不断的更新;更新之前,它会先检查数据库里的版本号,是否发生过改变,如果发生了改变,那么乐观锁的操作将会无效; 

0 0
原创粉丝点击