二级缓存的应用(ehcache)
来源:互联网 发布:淘宝苹果靠谱店铺推荐 编辑:程序博客网 时间:2024/05/16 06:37
实体类:
package com.ematchina.test;
import java.sql.Timestamp;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Version;
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;
@Entity
@Table(name = "book")
@Cache(usage=CacheConcurrencyStrategy.READ_WRITE)
public class Book {
private int id;
//private Timestamp lastDate;
private String name;
private int price;
private int version;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "id", length = 11)
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Version
@Column(name = "version",length = 11)
public int getVersion() {
return version;
}
public void setVersion(int version) {
this.version = version;
}
@Column(name = "name",length = 10)
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Column(name = "price",length = 11)
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
/*@Version
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "lastDate")
public Date getLastDate() {
return lastDate;
}
public void setLastDate(Timestamp lastDate) {
this.lastDate = lastDate;
}*/
}
hibernate.cfg.xml
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>
<session-factory>
<property name="show_sql">true</property>
<property name="connection.url">jdbc:mysql://localhost:3306/bbb</property>
<property name="connection.username">root</property>
<property name="connection.password"></property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 以下是配置二级缓存 -->
<property name="hibernate.cache.use_second_level_cache">true</property>
<property name="hibernate.cache.use_query_cache">true</property>
<property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property>
<mapping class="com.ematchina.test.Book"/>
</session-factory>
</hibernate-configuration>
Test:
@org.junit.Test
public void select(){
Session session = sessionFactory.openSession();
Transaction tx = null;
try {
tx = session.beginTransaction();
//本次查询是经过数据库
Query query = session.createQuery("from Book");
List<Book> list = query.list();
System.out.println(list.size());
for(Book book : list){
System.out.println(book.getName());
}
//消除缓存指定的对象
sessionFactory.evict(Book.class, 60);
tx.commit();
System.out.println("-----------");
//本次查询实体是经过缓存不经过数据库
Session session2 = sessionFactory.openSession();
Transaction tx1 = session2.beginTransaction();
Book book = (Book) session2.get(Book.class, 60);
System.out.println(book.getName());
tx1.commit();
} catch (Exception ex) {
if (null != tx) {
tx.rollback();
}
} finally {
if (null != session) {
session.close();
}
}
}
package com.ematchina.test;
import java.sql.Timestamp;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Version;
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;
@Entity
@Table(name = "book")
@Cache(usage=CacheConcurrencyStrategy.READ_WRITE)
public class Book {
private int id;
//private Timestamp lastDate;
private String name;
private int price;
private int version;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "id", length = 11)
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Version
@Column(name = "version",length = 11)
public int getVersion() {
return version;
}
public void setVersion(int version) {
this.version = version;
}
@Column(name = "name",length = 10)
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Column(name = "price",length = 11)
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
/*@Version
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "lastDate")
public Date getLastDate() {
return lastDate;
}
public void setLastDate(Timestamp lastDate) {
this.lastDate = lastDate;
}*/
}
hibernate.cfg.xml
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>
<session-factory>
<property name="show_sql">true</property>
<property name="connection.url">jdbc:mysql://localhost:3306/bbb</property>
<property name="connection.username">root</property>
<property name="connection.password"></property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 以下是配置二级缓存 -->
<property name="hibernate.cache.use_second_level_cache">true</property>
<property name="hibernate.cache.use_query_cache">true</property>
<property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property>
<mapping class="com.ematchina.test.Book"/>
</session-factory>
</hibernate-configuration>
Test:
@org.junit.Test
public void select(){
Session session = sessionFactory.openSession();
Transaction tx = null;
try {
tx = session.beginTransaction();
//本次查询是经过数据库
Query query = session.createQuery("from Book");
List<Book> list = query.list();
System.out.println(list.size());
for(Book book : list){
System.out.println(book.getName());
}
//消除缓存指定的对象
sessionFactory.evict(Book.class, 60);
tx.commit();
System.out.println("-----------");
//本次查询实体是经过缓存不经过数据库
Session session2 = sessionFactory.openSession();
Transaction tx1 = session2.beginTransaction();
Book book = (Book) session2.get(Book.class, 60);
System.out.println(book.getName());
tx1.commit();
} catch (Exception ex) {
if (null != tx) {
tx.rollback();
}
} finally {
if (null != session) {
session.close();
}
}
}
- 二级缓存的应用(ehcache)
- 二级缓存ehcache的使用方法
- Hibernate的二级缓存技术 EhCache
- EHCache(hibernate二级缓存插件)
- mybatis二级缓存应用及与ehcache整合
- mybatis二级缓存应用及与ehcache整合
- 基于注解形式的hibernate二级缓存的使用(ehcache)
- 基于注解形式的hibernate二级缓存的使用(ehcache)
- 基于注解形式的hibernate二级缓存的使用(ehcache)
- hibernate3.2二级缓存的配置及测试(ehcache)
- ehcache二级缓存配置(SSH缓存的配置) (转)
- 二级缓存ehcache
- ehCache基于JPA的二级缓存的使用
- Hibernate二级缓存插件EHCache的配置
- Hibernate二级缓存以及ehcache的搭建配置
- Hibernate 的 二级缓存——ehcache配置文件
- 搭建Hibernate二级缓存EHcache的环境
- ehcache作为Mybatis二级缓存的问题
- TDP和CPU功耗
- oracle复制表的sql语句
- Android数据存储之Network
- [SharePoint 2010] 初识SharePoint BI -- PerformancePoint Service
- 设计模式简介
- 二级缓存的应用(ehcache)
- JFFS2 文件系统的工作原理
- myeclipse中配置spket插件步骤
- Hibernate 乐观锁实现之 Version
- adb常用命令
- 网络Cookie工作原理
- MySQL中取整函数round和floor
- java中try 与catch的使用
- 利用SWIG对C++库进行Python包装