java.io.tmpdir - Default temp file path -->
maxElementsInMemory="10000"
eternal="false"
timeToIdleSeconds="300"
timeToLiveSeconds="120"
overflowToDisk="true"
/>
|
一级二级缓存详解
Hibernate一级缓存
1. 缓存是指一组数据的集合,这些数据储存在其他地方,因为获取这些数据代价昂贵,所以把这些结果数据保存起来,让下一次需要这些数据的时候直接使用,这就大大提高了系统效率。
2. 一级缓存很短和session的生命周期一致,一级缓存也叫session级或事务级缓存。
3. 哪些方法支持一级缓存及一级缓存的管理:
get()
load()
Iterate () (查询实体对象)
session.clear(),session.evict()(管理一级缓存)
Hibernate二级缓存
1. 二级缓存的生命周期和SessionFactory的生命周期一致,也称SessionFactory级或进程级的缓存。
2. 因为我们提到了,二级缓存是一个可插拔的缓存插件,所以二级缓存一定要先配置后使用。
3. 二级缓存的配置:
将echcache.xml文件拷贝到src下
开启二级缓存,修改hibernate.cfg.xml文件
use_second_level_cache">true
指定缓存产品提供商,修改hibernate.cfg.xml文件
org.hibernate.cache.EhCacheProvider
指定哪些实体类使用二级缓存(两种方法)
*在映射文件中采用
*在hibernate.cfg.xml文件中,采用
使用HibernateSessionFactory得到session实现CRUD
| UserOperDAO.java |
| package com.ibm.dao;
import java.util.Iterator; import java.util.List;
import org.hibernate.CacheMode; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction;
import com.ibm.factory.HibernateSessionFactory; import com.ibm.pojo.User;
public class UserOperDAO { public void add(User user){ //定义sessiontran变量 Session session=null; Transaction tran=null; try { //获得session开启事务(涉及数据修改操作时都需要开启事务) session=HibernateSessionFactory.getSession(); tran=session.beginTransaction(); session.save(user);
//提交事务数据入库 tran.commit();
} catch (Exception e) { //事务回滚 tran.rollback(); }finally{ //关闭session HibernateSessionFactory.closeSession(); } }
/** * 按照用户id删除用户 * @param user */
public void delUser(User user){ Session session= null; Transaction tran=null; try {
session=HibernateSessionFactory.getSession(); tran=session.beginTransaction();
session.delete(user); tran.commit(); } catch (Exception e) { tran.rollback(); }finally{ HibernateSessionFactory.closeSession(); } }
/** * 修改用户 * @param user */ public void updateUser(User user){
Session session= null; Transaction tran=null; try {
session=HibernateSessionFactory.getSession(); tran=session.beginTransaction();
session.update(user); tran.commit(); } catch (Exception e) { e.printStackTrace(); tran.rollback(); }finally{ HibernateSessionFactory.closeSession(); }
}
/** * 获得用户信息列表 * @return list */ public List
List
Session session=null; try { session=HibernateSessionFactory.getSession(); String sql="from User user"; Query query=s |