// session=HibernateSessionFactory.getSession();
// user=(User)session.load(User.class, 3);
// System.out.println("用户名是:"+user.getUserName());
// session.close();
//一级缓存和二级缓存交互测试
session = HibernateSessionFactory.getSession();
session.setCacheMode(CacheMode.GET);
User user=(User) session.load(User.class, 3);
System.out.println("用户名是:"+user.getUserName());
session.close();
System.out.println("*****我是分割线****");
System.out.println("用户名是:"+user.getUserName());
session = HibernateSessionFactory.getSession();
session.setCacheMode(CacheMode.GET);
user=(User) session.load(User.class, 3);
System.out.println("用户名是:"+user.getUserName());
session.close();
} catch (Exception e) {
e.printStackTrace();
}
}
测试
| public static void main(String[] args) { UserOperDAO dao=new UserOperDAO(); //增加 // User user = new User(); // user.setUserName("范围"); // dao.add(user);
//修改 // User user1=new User(); // //删除时必须给删除对象的主键赋值 // user1.setUserId(2); // dao.delUser(user1);
//修改 // User user2=new User(); // user2.setUserId(5); // user2.setUserName("jack"); // dao.updateUser(user2);
//查询 // List
// for (User user : list) { // System.out.println("用户名称是:"+user.getUserName()); // }
// //延迟加载测试 // dao.lazyTest();
//缓存测试 // dao.cachTest();
//iteator和list集合比较 // dao.compListAndIterat();
//二级缓存测试 dao.secondCachTest(); } |
二级缓存配置
| Ehcache.xml(放在src目录下) |
|||
|
If the path is a Java System Property it is replaced by its value in the running VM.
The following properties are translated: user.home - User's home directory user.dir - User's current working directory 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文件中,采用