关于hibernate锁,缓存
来源:互联网 发布:白酒网络推广方案 编辑:程序博客网 时间:2024/04/29 04:16
hibernate锁
在hibernate并发中起作用
hibernate分为乐观锁与悲观锁
悲观锁在一个人修改数据的时候不允许别人对此数据进行修改,直到此数据修改完成
乐观锁允许,有很好的并发效果,在允许时候进行标记。
<version name="varsion" column="version" type=""></varsion>
也可用<timestamp>
也可以在class下配置optimisitic-lock
如
<?xml version="1.0"?>
关于缓存
get,load
get是先到session中查找,然后去二级缓存中找,最后去数据库找。
load是先到session找,然后创建代理,所以一般运用load实现延时加载。
总结:get没有找到返回null,load的话一定认为数据库中有记录,如果没有记录的话就会抛出异常org.hibernate.ObjectNotFoundException。
二级缓存
一般使用二级缓存是ehcache
在配置xx.hbm.xml文件时候再class下加<cache usage="read-write"/>(读写) 或者<cache usage="read-only"/>(只读)
在hibernate.cfg.xml中添加如下配置:
property name="hibernate.cache.use_second_level_cache">true</property>
<!-- 设置缓存提供者 -->
<property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property>
编写ehcache.xml 配置文件
<ehcache>
<!-- maxElementsInMemory="10000" 缓存中最大允许创建的对象数 -->
<!-- eternal="false" 缓存中对象是否为永久的,如果是,超时设置将被忽略,对象从不过期 -->
<!-- timeToIdleSeconds="120" 缓存数据钝化时间(设置对象在它过期之前的空闲时间) -->
<!-- timeToLiveSeconds="120" 缓存数据的生存时间(设置对象在它过期之前的生存时间) -->
<!-- overflowToDisk="true" 内存不足时,是否启用磁盘缓存 -->
<diskStore path="c:\\ehcache\"/>
<defaultCache
maxElementsInMemory="10000"
eternal="false"
timeToIdleSeconds="120"
timeToLiveSeconds="120"
overflowToDisk="true"
/>
</ehcache>
使用查询方法
/****
* 根据hql查询List
*/
public List findCacheListByHql(final String hql) {
// TODO Auto-generated method stub
return this.getHibernateTemplate().executeFind(new HibernateCallback(){
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
// TODO Auto-generated method stub
Query queryObject = session.createQuery(hql);
//设置是否启用缓存
queryObject.setCacheable(true);
if(getHibernateTemplate().getQueryCacheRegion() != null){
queryObject.setCacheRegion(getHibernateTemplate().getQueryCacheRegion());
}
return queryObject.list();
}
});
}
缓存仅仅对hql查询生效,如果使用sql更新数据库,缓存不会被修改,只有使用hql操作数据库才能同步修改缓存数据!
- 关于hibernate锁,缓存
- 关于hibernate缓存
- 关于Hibernate的缓存
- 关于Hibernate缓存机制
- 关于hibernate一级缓存
- 关于hibernate一级缓存二级缓存,查询缓存
- 关于hibernate的缓存使用
- 关于hibernate的缓存使用
- 关于hibernate缓存,load,get
- 关于hibernate的缓存使用
- 关于hibernate的缓存使用
- 关于hibernate的缓存使用
- 关于Hibernate session 的缓存
- 关于HIbernate缓存的配置
- 关于hibernate的缓存使用
- 关于hibernate缓存的问题
- 关于hibernate的缓存使用
- 关于hibernate的缓存使用
- 数据库 T-SQL 里的 GO 是什么意思
- 线程同步-生产者与消费者问题
- 支持向量机笔记(二) Lagrange duality拉格朗日对偶
- class-dump逆向分析app
- Pills - HDU 4165 递推打表
- 关于hibernate锁,缓存
- 黑马程序员-Generic
- tar命令【自己留存】
- 用户空间和内核空间通讯之【proc文件系统】
- Windows Live Writer测试帖
- 那么为什么作为函数形参的数组和指针申明可以互换呢?
- VIPS:基于视觉的Web页面分页算法
- K-means聚类算法
- Handler有何作用?如何使用?