Hibernate性能优化策略 HibernateCacheXMLCC++
程序员文章站
2022-05-07 19:29:19
...
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>
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>
上一篇: 纯CSS3实现给头像加个光芒四射且旋转的背景动画效果
下一篇: java Excel 导出