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

2014-11-24 02:45:24 · 作者: · 浏览: 10
rking 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"/>)


使用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 getAllUser(){

List list= null;

Session session=null;

try {

session=HibernateSessionFactory.getSession();

String sql="from User user";

Query query=s