Hibernate_二级缓存1_初步使用

来源:互联网 发布:java集合框架容器 编辑:程序博客网 时间:2024/06/05 08:27
<!-- 使用二级缓存,默认是未打开的 --><!-- 指定要使用的缓存的要提供的供应商,这也就打开了二级缓存 --><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 UNCOMMITED1读已提交READ COMMITED2可重复读REPEATABLE READ4串行化(不可并发)SERIALIZEABLE8--><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条查询语句])@Testpublic void testSessionCache() throws Exception {// ====================================第1个SessionSession 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个SessionSession 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();}}}






0 0
原创粉丝点击