1.先导入Jar包
hibernate二级缓存的jar包
ehcache-core-2.4.3.jar
hibernate-ehcache-4.2.7.Final.jar
slf4j-api-1.6.1.jar
@Transient注解 写在ehcache.xml里<!-- 指定的PO对象的缓存规则 --> 的po里。
配置启动二级缓存
hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?> <persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> <persistence-unit name="mysql" transaction-type="RESOURCE_LOCAL"> <!--可选 --> <shared-cache-mode>ENABLE_SELECTIVE</shared-cache-mode> <!--ORM产品厂商的特定属性 --> <properties> <!--配置Hibernate方言 --> <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" /> <!--配置数据库驱动 --> <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" /> <!--配置数据库用户名 --> <property name="hibernate.connection.username" value="root" /> <!--配置数据库密码 --> <property name="hibernate.connection.password" value="" /> <!--配置数据库url --> <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8" /> <!--设置外连接抓取树的最大深度 --> <property name="hibernate.max_fetch_depth" value="3" /> <!-- 显示SQL语句 --> <property name="hibernate.show_sql" value="true" /> <!-- 格式化SQL语句 --> <property name="hibernate.format_sql" value="false" /> <!-- 提取数据深度 --> <property name="hibernate.max_fetch_depth" value="3" /> <!-- 一个批提取多少条 --> <property name="hibernate.jdbc.batch_size" value="10" /> <!-- 正常语句提取多少条 --> <property name="hibernate.jdbc.fetch_size" value="50" /> <!--启用二级缓存--> <property name="hibernate.cache.use_second_level_cache" value="true" /> <property name="hibernate.cache.region.factory_class" value="org.hibernate.cache.ehcache.EhCacheRegionFactory" /> <property name="hibernate.cache.use_query_cache" value="true" /> <!-- 指定缓存配置文件位置 --> <property name="hibernate.cache.provider_configuration_file_resource_path" value="config/cache/ehcache.xml"></property> <!-- 强制Hibernate以更人性化的格式将数据存入二级缓存 --> <property name="hibernate.cache.use_structured_entries" value="true"></property> <!--自动输出schema创建DDL语句 --> <property name="hibernate.hbm2ddl.auto" value="update" /> </properties> </persistence-unit> </persistence>
2.在src下创建ehcache.xml
<?xml version="1.0" encoding="UTF-8"?> <ehcache> <!-- 二级缓存 --> <!-- 默认cache:如果没有对应的特定区域的缓存,就使用默认缓存 --> <!--缓存最大个数--> <defaultCache maxElementsInMemory="10000" <!--对象是否永久有效,一但设置了,timeout将不起作用。--> eternal="false" <!--设置对象在失效前的允许闲置时间(单位:秒)。仅当eternal=false对象不是永久有效时使用,可选属性,默认值是0,也就是可闲置时间无穷大。--> timeToIdleSeconds="300" <!--设置对象在失效前允许存活时间(单位:秒)。最大时间介于创建时间和失效时间之间。仅当eternal=false对象不是永久有效时使用,默认是0.,也就是对象存活时间无穷大。--> timeToLiveSeconds="600" <!--当内存中对象数量达到maxElementsInMemory时,Ehcache将会对象写到磁盘中。--> overflowToDisk="false"/> <!-- 指定ResourcePO对象的缓存规则 --> <resourcepo name="com.sysmaster.po.ResourcePO" eternal="false" maxElementsInMemory="100" timeToIdleSeconds="1200" timeToLiveSeconds="1200" overflowToDisk="false"> </resourcepo> </ehcache>
Resource.java
package com.sysmaster.po; import java.util.ArrayList; import java.util.List; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; import javax.persistence.Table; import javax.persistence.Transient; @Entity @Table(name="T_Resource") public class ResourcePO { //资源编号 private int rid; //资源标题 private String name; //资源图标 private String icon; //操作标识,用于指明主操作区按钮的操作特征(傎为:addPage,editPage,del,search) private String opt; //url地址 private String url; //排序规则 private int seq; //备注 private String remark; //资源类型 private int rtid; //增加资源类型 private ResourceTypePO resourceType; //级联子资源 private List<ResourcePO> resourceList; //父项资源 private ResourcePO presource; public ResourcePO() { resourceList = new ArrayList<ResourcePO>(); } @Id @GeneratedValue public int getRid() { return rid; } public void setRid(int rid) { this.rid = rid; } @Column(length=20) public String getName() { return name; } public void setName(String name) { this.name = name; } @Column(length=30) public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } @Column(length=20) public String getIcon() { return icon; } public void setIcon(String icon) { this.icon = icon; } public int getSeq() { return seq; } public void setSeq(int seq) { this.seq = seq; } public String getOpt() { return opt; } public void setOpt(String opt) { this.opt = opt; } public String getRemark() { return remark; } public void setRemark(String remark) { this.remark = remark; } @ManyToOne(cascade={CascadeType.PERSIST,CascadeType.REFRESH}) @JoinColumn(name="rtid") public ResourceTypePO getResourceType() { return resourceType; } public void setResourceType(ResourceTypePO resourceType) { this.resourceType = resourceType; } @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name="prid") public ResourcePO getPresource() { return presource; } public void setPresource(ResourcePO presource) { this.presource = presource; } @OneToMany(cascade=CascadeType.ALL,mappedBy="presource") public List<ResourcePO> getResourceList() { return resourceList; } public void setResourceList(List<ResourcePO> resourceList) { this.resourceList = resourceList; } @Transient public int getRtid() { return rtid; } public void setRtid(int rtid) { this.rtid = rtid; } }
相关推荐
hibernate一级缓存和二级缓存的区别与联系
hibernate4配置ehcache二级缓存,以及相关的jar都在源码中。
此配置和包,是springMVC4.3.3 +spring4+hibernate5.1.3+二级缓存ehcache(不用可以关闭)+fastjson。 是正常运行的项目里拷出来的,方便大家使用。
Hibernate二级缓存Hibernate二级缓存Hibernate二级缓存Hibernate二级缓存Hibernate二级缓存
传播智客,为Spring集成的Hibernate配置二级缓存、cache.xml
用memcached实现 Hibernate4二级缓存的实例源码。
为Spring集成的Hibernate配置二级缓存
ehcache 二级缓存 配置使用的jar包 配置如下: <!-- 启用二级缓存 --> <property name="hibernate.cache.use_second_level_cache">true <!-- 查询的二级缓存配置 --> <property name="hibernate....
hibernate 二级缓存详解hibernate 二级缓存详解hibernate 二级缓存详解hibernate 二级缓存详解hibernate 二级缓存详解hibernate 二级缓存详解hibernate 二级缓存详解hibernate 二级缓存详解hibernate 二级缓存详解
Spring4+Hibernate4二级缓存实例源码.
主要讲解hibernate缓存的配置和和使用方法,以及一级缓存和二级缓存的定义和区别,和查询缓存的使用
基于springboot最新版本2.1.4.RELEASE,采用jpa为dao层框架,配置redis(redisson)为hibernate的二级缓存。
Hibernate 一级缓存和二级缓存的区别
hibernate的一级缓存和二级缓存,hibernate的一级缓存和二级缓存,hibernate的一级缓存和二级缓存,hibernate的一级缓存和二级缓存,hibernate的一级缓存和二级缓存
文件包含配置memecached作hibernate4的二级缓存所需要的jar包。
hibernate5.1二级缓存包
Hibernate+ehcache二级缓存技术 Hibernate+ehcache二级缓存技术
基于hibernate二级缓存使用的源码实例
Hibernate 二级缓存
hibernate配置二三级缓存