实际使用中,发现pharos底层的table_info表和users表的读操作过于频繁,因此为它们增加二级缓存,以提高性能
0.首先修改hibernate.properties文件,
增加
hibernate.cache.provider_class=net.sf.hibernate.cache.EhCacheProvider
hibernate.cache.use_query_cache=true
1.修改endbran/src/java/ehcache.xml,增加如下内容:
<cache name="com.vtradex.endbrain.model.TableInfo"
maxElementsInMemory="1000"
eternal="true"
timeToIdleSeconds="86400"
timeToLiveSeconds="86400"
overflowToDisk="true"
/>
<cache name="com.vtradex.endbrain.model.TableInfo.excludedColumns"
maxElementsInMemory="1000"
eternal="true"
timeToIdleSeconds="86400"
timeToLiveSeconds="86400"
overflowToDisk="true"
/>
<cache name="com.vtradex.bedrock.model.security.User"
maxElementsInMemory="1000"
eternal="true"
timeToIdleSeconds="86400"
timeToLiveSeconds="86400"
overflowToDisk="true"
/>
<cache name="com.vtradex.bedrock.model.security.User.roles"
maxElementsInMemory="1000"
eternal="true"
timeToIdleSeconds="86400"
timeToLiveSeconds="86400"
overflowToDisk="true"
/>
<cache name="com.vtradex.bedrock.model.security.User.groups"
maxElementsInMemory="1000"
eternal="true"
timeToIdleSeconds="86400"
timeToLiveSeconds="86400"
overflowToDisk="true"
/>
<cache name="com.vtradex.bedrock.model.security.User.authorizations"
maxElementsInMemory="1000"
eternal="true"
timeToIdleSeconds="86400"
timeToLiveSeconds="86400"
overflowToDisk="true"
/>
2.修改com/vtradex/endbrain/dao/hibernate/tableInfo.hbm.xml
2.1在class定义下加入
<cache usage="nonstrict-read-write"/>
2.2在<set name="excludedColumns" table="TABLE_COLUMN">
下加入
<cache usage="read-write"/>
3.修改com.vtradex.endbrain.dao.hibernate.HibernateTableInfoDao
在getTableInfoByIdentity方法和getTableInfosByPage方法中
增加
setCacheable(true)
setCacheRegion("com.vtradex.endbrain.model.TableInfo")
4.修改com/vradex/bedrock/dao/security/hibernate/user.hbm.xml
4.1在class定义下加入
<cache usage="nonstrict-read-write"/>
4.2在 <set name="roles" table="USER_ROLE" lazy="true" cascade="save-update">
<set name="groups" table="GROUP_USER" lazy="true" inverse="true">
<set name="authorizations" table="USER_AUTHORIZATION" lazy="true" inverse="true" cascade="all-delete-orphan">
下分别加入
<cache usage="read-write"/>
5.修改com.vtradex.bedrock.dao.security.hibernate.HibernateUserDao
在getUserByLoginName方法中
增加
setCacheable(true)
setCacheRegion("com.vtradex.bedrock.model.security.User")