java 从零开始,学习笔记之基础入门(Hibernate_实战演练)(三十七)(四)

2014-11-24 02:45:24 · 作者: · 浏览: 9
out.println("**************我是分割线*******************");

// 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 list=dao.getAllUser();

// 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 -->

"c:\\hibernatecache"/>

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文件中,采用 标签( "read-only" class= "com.ibm.pojo.User"/>)