欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Hibernate性能优化策略 HibernateCacheXMLCC++ 

程序员文章站 2022-05-07 19:28:43
...
1)缓存机制
a)基本缓存——Session缓存(一级缓存)
Session中保存了一个Map(id-->PO)
PO(持久化对象)
b)二级缓存(全局缓存)——SessionFactory
1、过度使用的问题:内存会被过度占用,
会导致系统性能急剧下降。
2、使用条件:
i)缓存的数据比较稳定(变动不频繁)(如 部门)
ii)缓存的数据使用比较频繁(缓存的命中率)
c)启用二级缓存
在“hibernate.cfg.xml”的<session-factory>中加入属性——
<property name="hibernate.cache.provider_class">
org.hibernate.cache.OSCacheProvider
</property>
d)使用二级缓存
缓存方式:read-only;read-write
两个级别——类级别和集合级别
使用语法:在<class>或<set>(集合)里面加入——
<cache usage="read-only | read-write" />

1)read-only (只读)
一般包括系统参数
<class name="SystemParameter" table="t_syspara" mutable="false">
<cache usage="read-only"/>
<id name="id" type="integer" column="id">
<generator class="native" />
</id>
</class>

2)read-write (可写)
<class name="Dept" table="t_dept">
        <cache usage="read-write" />
       
        <set name="emps">
        <cache usage="read-write" />
        ...
        </set>
    </class>

2)延缓加载
a、在绝大多数情况下是很有用的
如 order(items)
b、取消延缓加载的方法
i)<class  ...  lazy="false" />
ii)关联映射中,关联的地方用“fetch="join"”
<many-to-one name="dept" class="Dept" column="dept_id" fetch="join"/>


3)批量抓取
"batch-size=10"
用在<class>或<set>(集合)
a、class
用Emp来抓取Dept
<class name="Dept" batch-size="10" >

b、set
用Order来抓取Items
<class name="Order"...>
...
<set ... batch-size="3">
</set>
</class>