Hibernate中配置ehcache案例
来源:互联网 发布:从律所跳槽当法务知乎 编辑:程序博客网 时间:2024/06/10 19:43
源代码下载地址:
http://download.csdn.net/detail/itjavawfc/7690569
源代码如下:
测试类:
import java.util.Iterator;import org.hibernate.Session;import org.hibernate.Transaction;import entity.District;import entity.Street;import util.HibernateUtil;public class RelationTest {public static void main(String[] args){ Session session=HibernateUtil.getSession();Transaction tx=session.beginTransaction(); /*District d1=new District(65,"大黄");Street s1=new Street(1,d1,"j");Street s2=new Street(2,d1,"ji");Street s3=new Street(3,d1,"i");Street s4=new Street(null,d1,"jo");session.save(d1);session.save(s1);session.save(s2);session.save(s3);*//*District d1=new District(null,"武汉东湖黄冈");Street s1=new Street();s1.setStreet_name("武汉");Street s2=new Street();s2.setStreet_name("随州");Street s3=new Street();s2.setStreet_name("上市");d1.getStreets().add(s1);d1.getStreets().add(s2);d1.getStreets().add(s3);session.save(d1);//session.save(s1);//session.save(s2);//session.save(s3); */ District d=(District)session.get(District.class, 1002);System.out.println("您的所在区为:"+d.getName()+",所在街道如下:");Iterator<Street> it=d.getStreets().iterator();while(it.hasNext()){Street s=it.next();System.out.println(s.getId()+" ------------- "+s.getStreet_name()+" ------------- "+s.getStreet_name());}tx.commit();session.close();//HibernateUtil.close(); //-----------------------------------------------------------------------------------------------System.out.println("-----------2222222222222------------------------------------------------------------------");Session session2=HibernateUtil.getSession();Transaction tx2=session2.beginTransaction();District d2=(District)session2.load(District.class, 1002);System.out.println("您的所在区为:"+d2.getName()+",所在街道如下:");session2.close();HibernateUtil.close(); }}
两个实体类:
package entity;import java.io.Serializable;import java.util.HashSet;import java.util.Set;import org.hibernate.annotations.Cache;import org.hibernate.annotations.CacheConcurrencyStrategy;@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)public class District implements Serializable {private Integer id;private String name;private Set<Street> streets=new HashSet<Street>();public Set<Street> getStreets() {return streets;}public void setStreets(Set<Street> streets) {this.streets = streets;}public District() {super();}public District(Integer id, String name) {super();this.id = id;this.name = name;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic int hashCode() {final int prime = 31;int result = 1;result = prime * result + ((id == null) ? 0 : id.hashCode());result = prime * result + ((name == null) ? 0 : name.hashCode());return result;}@Overridepublic boolean equals(Object obj) {if (this == obj)return true;if (obj == null)return false;if (getClass() != obj.getClass())return false;District other = (District) obj;if (id == null) {if (other.id != null)return false;} else if (!id.equals(other.id))return false;if (name == null) {if (other.name != null)return false;} else if (!name.equals(other.name))return false;return true;}}
package entity;import java.io.Serializable;import org.hibernate.annotations.Cache;import org.hibernate.annotations.CacheConcurrencyStrategy; //@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)public class Street implements Serializable {private Integer id;private District districtid; private String street_name; public Street() {super();} public Street(Integer id, District districtid, String street_name) {super();this.id = id;this.districtid = districtid;this.street_name = street_name;} public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public District getDistrictid() {return districtid;}public void setDistrictid(District districtid) {this.districtid = districtid;}public String getStreet_name() {return street_name;}public void setStreet_name(String street_name) {this.street_name = street_name;}public int hashCode() {final int prime = 31;int result = 1;result = prime * result+ ((districtid == null) ? 0 : districtid.hashCode());result = prime * result + ((id == null) ? 0 : id.hashCode());result = prime * result+ ((street_name == null) ? 0 : street_name.hashCode());return result;}@Overridepublic boolean equals(Object obj) {if (this == obj)return true;if (obj == null)return false;if (getClass() != obj.getClass())return false;Street other = (Street) obj;if (districtid == null) {if (other.districtid != null)return false;} else if (!districtid.equals(other.districtid))return false;if (id == null) {if (other.id != null)return false;} else if (!id.equals(other.id))return false;if (street_name == null) {if (other.street_name != null)return false;} else if (!street_name.equals(other.street_name))return false;return true;}}
两个DAO
package dao.impl;import java.util.List;import entity.Street;public interface IStreetDAO {void insert(Street entity);void delete(Street entity);void update(Street entity);Street findById(Integer id);List<Street> list();}
package dao.impl;import java.util.List;import entity.District;import entity.Street;public interface IDistrictDAO {void insert(Street entity);void delete(District entity);void update(District entity);District findById(Integer id);List<District> list(); /*void insert(Street entity);void delete(Street entity);void update(Street entity);Street findById(Integer id);List<Street> list(); */}
两个DAO实现:
package dao.impl;import java.util.List;import org.hibernate.HibernateException;import org.hibernate.Session;import org.hibernate.Transaction;import util.HibernateUtil;import entity.District;import entity.Street;public class StreetDAOImpl implements IStreetDAO {@Overridepublic void insert(Street entity) {// TODO Auto-generated method stub// TODO Auto-generated method stubSession session=HibernateUtil.getSession();Transaction tx=session.beginTransaction();//Street s=new Street();session.save(entity);tx.commit();session.close();}@Overridepublic void delete(Street entity) {// TODO Auto-generated method stubSession session=HibernateUtil.getSession();Transaction tx=session.beginTransaction();session.createQuery("delete Street").executeUpdate();tx.commit();session.close();}@Overridepublic void update(Street entity) {// TODO Auto-generated method stub// TODO Auto-generated method stubSession session=HibernateUtil.getSession();Transaction tx=session.beginTransaction();session.update(entity);tx.commit();session.close();}@Overridepublic Street findById(Integer id) {// TODO Auto-generated method stubSession session=HibernateUtil.getSession();Transaction tx=session.beginTransaction();Street d=null;try{d=(Street)session.get(Street.class,id);//System.out.println(d);tx.commit();}catch(HibernateException e){tx.rollback();}finally{session.close();}//System.out.println(d);return d;}@Overridepublic List<Street> list() {// TODO Auto-generated method stubreturn null;} }
package dao.impl;import java.util.List;import org.hibernate.HibernateException;import org.hibernate.Session;import org.hibernate.Transaction;import util.HibernateUtil;import entity.District;import entity.Street;public class DistrictDAOImpl implements IDistrictDAO {@Overridepublic void insert(Street entity) {// TODO Auto-generated method stub}@Overridepublic void delete(District entity) {// TODO Auto-generated method stub}@Overridepublic void update(District entity) {// TODO Auto-generated method stub}@Overridepublic District findById(Integer id) {// TODO Auto-generated method stubSession session=HibernateUtil.getSession();Transaction tx=session.beginTransaction();District d=null;try{d=(District)session.get(District.class,1001);//System.out.println(d);tx.commit();}catch(HibernateException e){tx.rollback();}finally{session.close();}//System.out.println(d);return d;}@Overridepublic List<District> list() {// TODO Auto-generated method stubreturn null;} }
对应两个配置文件:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" ><hibernate-mapping> <class name="entity.District" table="DISTRICT" schema="scott"> <cache usage="read-only" region="sampleCache1"/> <id name="id" type="java.lang.Integer"> <column name="ID" precision="22" scale="0" /> <generator class="sequence" > <param name="sequence">SEQ_DISTRICT</param> </generator> </id> <property name="name" type="java.lang.String"> <column name="DISTRICT_NAME" length="7" not-null="true" /> </property> <set name="streets" > <!-- cascade="all" cascade="all"--> <!-- <cache usage="read-only"/> --> <key column="DISTRICT_ID"/> <one-to-many class="entity.Street"/> </set> </class></hibernate-mapping>
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" ><hibernate-mapping> <class name="entity.Street" table="STREET" schema="scott"> <cache usage="read-only" region="sampleCache1"/> <id name="id" type="java.lang.Integer"> <column name="ID" precision="22" scale="0" /> <generator class="native" > <param name="sequence">SEQ_DISTRICT</param> </generator> </id> <many-to-one name="districtid" class="entity.District"> <column name="DISTRICT_ID" length="7" not-null="true" /> </many-to-one> <property name="street_name" type="java.lang.String"> <column name="street_name" length="7" not-null="true" /> </property> </class></hibernate-mapping>
必须的ehcache.xml文件(在Hibernate目录中找)
<ehcache> <diskStore path="d:/ehcache"/> <!-- diskStore path="d:/ehcache"/ path="java.io.tmpdir"/ --> <defaultCache maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="true" /> <cache name="sampleCache1" maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="300" timeToLiveSeconds="600" overflowToDisk="true" /> <cache name="sampleCache2" maxElementsInMemory="1000" eternal="true" timeToIdleSeconds="0" timeToLiveSeconds="0" overflowToDisk="false" /> --> </ehcache>
Hibernate的配置文件:
<?xml version='1.0' encoding='UTF-8'?><!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"><!-- Generated by MyEclipse Hibernate Tools. --><hibernate-configuration><session-factory><property name="dialect">org.hibernate.dialect.Oracle9Dialect</property><property name="connection.url">jdbc:oracle:thin:@127.0.0.1:1521:orcl</property><property name="connection.username">scott</property><property name="connection.password">tiger</property><property name="connection.driver_class">oracle.jdbc.OracleDriver</property><property name="myeclipse.connection.profile">oracledriver</property><property name="show_sql">true</property><property name="format_sql">true</property> <property name="hibernate.hbm2ddl.auto">update</property> <!-- 配置二级缓存 ,启用二级缓存--> <!-- <property name="cache.use_second_level_cache">true</property> --> <property name="cache.use_query_cache">true</property> <property name="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</property> <!-- <property name="hibernate.cache.region.factory_class">org.hibernate.cache.EhCacheRegionFactory --><!-- </property> --> <mapping resource="entity/District.hbm.xml" /><mapping resource="entity/Street.hbm.xml" /> </session-factory></hibernate-configuration>
工具类:
package util;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;import org.hibernate.service.ServiceRegistry;import org.hibernate.service.ServiceRegistryBuilder;public class HibernateUtil {private static SessionFactory sf=null;private static HibernateUtil instance=new HibernateUtil();private HibernateUtil(){//读取文件Configuration cfg=new Configuration().configure();//解析再创建ServiceRegistry sr= new ServiceRegistryBuilder().applySettings(cfg.getProperties()).buildServiceRegistry();sf=cfg.buildSessionFactory(sr);}//提供静态方法public static Session getSession(){return sf.openSession();}public static void close(){if(sf!=null){sf.close();}}public static void main(String[] args){System.out.println(HibernateUtil.getSession());}}
运行结果:
很明显第二条结果是从缓存中取出来的。
工程目录结构:
0 0
- Hibernate中配置ehcache案例
- Hibernate中配置EHCache
- Hibernate中配置ehcache缓存
- Hibernate Annotation 中配置EhCache缓存
- Hibernate中ehcache二级缓存配置方法
- 在hibernate中配置EHcache流程
- Hibernate JPA 中配置Ehcache二级缓存
- Hibernate JPA 中配置Ehcache二级缓存
- Hibernate JPA 中配置Ehcache二级缓存
- Hibernate中Ehcache缓存的配置
- Hibernate+ehcache二级缓存配置
- Hibernate ehcache配置二级缓存
- hibernate之ehcache配置
- Hibernate配置Ehcache二级缓存
- EhCache配置Hibernate二级缓存
- Hibernate+EhCache配置二级缓存
- Spring+Hibernate+EHcache配置
- Spring+Hibernate+EHcache配置
- 发表于4松下便携式音乐播放器 - 办公应用软件制造商 - 中国折扣所以
- oracle中修改表名
- 杭电1097 快速幂的用法
- 眼部袒护当三百萨尔
- Arrays.binarySearch用法
- Hibernate中配置ehcache案例
- 野指针的发生,即解决方法
- 包装中国能否创造常州伟大是专业的路要走 - 常州Taish
- 【java】计算N的阶乘
- IT忍者神龟之树形结构的数据库表Schema设计
- Objective-C的@property 详解(ios,iphone,xcode,retain,release,assign,copy)
- java笔记-多线程-线程通信
- 关于R4i的SDHC 3DS任天堂游戏的一些信息
- 参数(parameter)和属性(Attribute)的区别