Hibernate_二级缓存1_初步使用

		<!-- 使用二级缓存,默认是未打开的 -->
		<!-- 指定要使用的缓存的要提供的供应商,这也就打开了二级缓存 -->
		<property name="cache.provider_class">org.hibernate.cache.HashtableCacheProvider</property>
		<!-- 指定要使用二级缓存实体类 -->
		<class-cache usage="read-write" class="cn.itcast.l_second_cache.Employee"/>


<!DOCTYPE hibernate-configuration PUBLIC
	"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
	"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
	<session-factory name="foo">
		<!-- 配置数据库信息 -->
		<!-- 方言 -->
		<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
		<!-- mysql连接配置 -->
		<property name="connection.url">jdbc:mysql://localhost:3306/hibernate_20170423</property>
		<!-- 配置连接mysql驱动 -->
		<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
		<!-- mysql用户名 -->
		<property name="connection.username">root</property>
		<!-- mysql密码 -->
		<property name="hibernate.connection.password">root</property>

		<!-- 其它配置 -->
		<!-- 显示生成的SQL语句 -->
		<property name="hibernate.show_sql">true</property>
		<!-- 格式化SQL语 -->
		<property name="hibernate.format_sql">false</property>

		<!-- create:先删除,再创建。 update:如果表不存在就创建,不一样就更新,一样就什么都不做。 create-dorp:初始化时创建表,SessionFactory执行close()时删除表。 
			validate:验证表结构是否一致,如果不一致,就抛异常。 -->
		<property name="hbm2ddl.auto">update</property>

		<!-- 设置默认事务隔离级别 
			隔离级别中文			隔离级别英文				对应的整数表示
			读未提交				READ UNCOMMITED				1
			读已提交				READ COMMITED				2
			可重复读				REPEATABLE READ				4
			串行化(不可并发)			SERIALIZEABLE				8
		-->
		<property name="connection.isolation">2</property>
		
		<!-- c3p0连接池设定 -->
		<!-- 使用c3p0连接池 配置连接池提供的供应商 -->
		<property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
		<!-- 在连接池中可用的数据库连接的最少数目 -->
		<property name="c3p0.min_size">5</property>
		<!-- 在连接池中所有数据库连接的最大数目 -->
		<property name="c3p0.max_size">20</property>
		<!-- 设定数据库连接时间,以秒为单位,
			如果连接池中的某个数据库连接处于空闲状态的时间超过了timeout时间,就会从连接池中清除 -->
		<property name="c3p0.timeout">120</property>
		<!-- 每3000秒检查所有连接池中空闲连接 以秒为单位 -->
		<property name="c3p0.idle_test_period">3000</property>
		
		<!-- 使用二级缓存,默认是未打开的 -->
		<!-- 指定要使用的缓存的要提供的供应商,这也就打开了二级缓存 -->
		<property name="cache.provider_class">org.hibernate.cache.HashtableCacheProvider</property>
		<!-- 指定要使用二级缓存实体类 -->
		<class-cache usage="read-write" class="cn.itcast.l_second_cache.Employee"/>
		
		<!-- 导入映射文件 -->
		<!-- <mapping resource="cn/itcast/a_helloworld/User.hbm.xml" /> -->

	</session-factory>
</hibernate-configuration>


package cn.itcast.l_second_cache;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;

/**
 * 应用程序操作类
 * 
 * @author 风清杨
 * @version V3.0
 * 
 */
public class App {
	private static SessionFactory sessionFactory = new Configuration()//
			.configure()//
			.addClass(Department.class)//
			.addClass(Employee.class)//
			.buildSessionFactory();

	// 测试一级缓存(一级缓存[在控制台显示2条查询语句])
	@Test
	public void testSessionCache() throws Exception {
		// ====================================第1个Session
		Session session = sessionFactory.openSession();
		Transaction tx = null;
		try {
			tx = session.beginTransaction();
			// ------------------------------------

			// 获取一方数据,并显示另一方信息
			Employee employee = (Employee) session.get(Employee.class, 1);
			// System.out.println(employee);

			// ------------------------------------
			tx.commit();
		} catch (RuntimeException e) {
			tx.rollback();
			throw e;
		} finally {
			session.close();
		}
		// ====================================第二2个Session
		Session session2 = sessionFactory.openSession();
		Transaction tx2 = null;
		try {
			tx2 = session2.beginTransaction();
			// ------------------------------------

			// 获取一方数据,并显示另一方信息
			Employee employee2 = (Employee) session2.get(Employee.class, 1);
			// System.out.println(employee2);

			// ------------------------------------
			tx2.commit();
		} catch (RuntimeException e) {
			tx2.rollback();
			throw e;
		} finally {
			session2.close();
		}
	}
}






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值