新建java project项目:chapter17_setehcache

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="dialect">
   org.hibernate.dialect.MySQLDialect
  </property>
  <property name="connection.url">
   jdbc:mysql://localhost:3307/users
  </property>
  <property name="connection.username">root</property>
  <property name="connection.password">root</property>
  <property name="connection.driver_class">
   com.mysql.jdbc.Driver
  </property>
  <property name="myeclipse.connection.profile">
   mysqlusers
  </property>
  <property name="show_sql">true</property>
  <property name="format_sql">true</property>
  <property name="current_session_context_class">thread</property>
  <property name="cache.provider_class">
   org.hibernate.cache.EhCacheProvider
     </property>
  <mapping resource="com/b510/examplex/Category.hbm.xml" />
  <mapping resource="com/b510/examplex/Product.hbm.xml" />

</session-factory>

</hibernate-configuration>

ehcache.xml

代码:

<?xml version="1.0" encoding="UTF-8"?>
<ehcache>
             <!-- 说明:maxElementsInMemory  设置 保存在内存中的缓存对象的最大数量
               etemal  设置缓存中对象 是否永远不过期,如果值为true,超过设置被忽略,缓存对象永远不过期
               timeToIdleSeconds   设置缓存中对象在他过期之前的最大空闲时间,单位为秒
               timeToLiveSeconds   设置缓存中对象在他过期之前的最大生存时间 ,单位为秒
               overflowToDisk      设置内存中的缓存对象达到maxElementsInMemory限制时,是否将缓存对象保存到硬盘中      
             -->
     <!--  -->
 <diskStore path="java.io.tmpdir"/>
 <defaultCache maxElementsInMemory="10000" eternal="false"
 timeToIdleSeconds="120" timeToLiveSeconds="120"
 overflowToDisk="true"/>
 <cache name="com.b510.examples.Product" maxElementsInMemory="1000"
 eternal="true" timeToIdleSeconds="300" timeToLiveSeconds="600"
 overflowToDisk="true"/> 
 <cache name="com.b510.example.Category.products" maxElementsInMemory="1000"
 eternal="true" timeToIdleSeconds="300" timeToLiveSeconds="600"
 overflowToDisk="true"/> 
 <cache name="com.b510.example.Category" maxElementsInMemory="1000"
 eternal="true" timeToIdleSeconds="300" timeToLiveSeconds="600"
 overflowToDisk="true"/> 
</ehcache>

Category.java

代码:

package com.b510.examplex;

import java.util.HashSet;
import java.util.Set;

/**
 * Category entity. @author MyEclipse Persistence Tools
 */

public class Category implements java.io.Serializable {

private static final long serialVersionUID = 7187702390542761264L;
 private Integer id;
 private String name;
 private String description;
 private Set products = new HashSet(0);

public Category() {
 }

public Integer getId() {
  return this.id;
 }

public void setId(Integer id) {
  this.id = id;
 }

public String getName() {
  return this.name;
 }

public void setName(String name) {
  this.name = name;
 }

public String getDescription() {
  return this.description;
 }

public void setDescription(String description) {
  this.description = description;
 }

public Set getProducts() {
  return this.products;
 }

public void setProducts(Set products) {
  this.products = products;
 }

}

Product.java

代码;

package com.b510.examplex;

/**
 * Product entity. @author MyEclipse Persistence Tools
 */

public class Product implements java.io.Serializable {

private static final long serialVersionUID = 1449100306422352085L;
 private Integer id;
 private Category category;
 private String name;
 private String price;
 private String descripton;

public Product() {
 }

public Integer getId() {
  return this.id;
 }

public void setId(Integer id) {
  this.id = id;
 }

public Category getCategory() {
  return this.category;
 }

public void setCategory(Category category) {
  this.category = category;
 }

public String getName() {
  return this.name;
 }

public void setName(String name) {
  this.name = name;
 }

public String getPrice() {
  return this.price;
 }

public void setPrice(String price) {
  this.price = price;
 }

public String getDescripton() {
  return this.descripton;
 }

public void setDescripton(String descripton) {
  this.descripton = descripton;
 }

}

Category.hbm.xml

代码:

<?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">
<!--
    Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
    <class name="com.b510.examplex.Category" table="category" catalog="users">
        <cache usage="read-only"/>
        <id name="id" type="java.lang.Integer">
            <column name="id" />
            <generator class="increment"></generator>
        </id>
        <property name="name" type="java.lang.String">
            <column name="name" length="500" />
        </property>
        <property name="description" type="java.lang.String">
            <column name="description" length="500" />
        </property>
        <set name="products" inverse="true">
            <cache usage="read-only"/>
            <key>
                <column name="category_id" />
            </key>
            <one-to-many class="com.b510.examplex.Product" />
        </set>
    </class>
</hibernate-mapping>

Product.hbm.xml

代码:

<?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">
<!--
    Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
    <class name="com.b510.examplex.Product" table="product" catalog="users">
        <id name="id" type="java.lang.Integer">
            <column name="id" />
            <generator class="increment"></generator>
        </id>
        <many-to-one name="category" class="com.b510.examplex.Category" fetch="select">
            <column name="category_id" />
        </many-to-one>
        <property name="name" type="java.lang.String">
            <column name="name" length="500" />
        </property>
        <property name="price" type="java.lang.String">
            <column name="price" length="10" />
        </property>
        <property name="descripton" type="java.lang.String">
            <column name="descripton" length="500" />
        </property>
    </class>
</hibernate-mapping>

测试代码:

HibernateTest.java

代码:

/**
 *
 */
package com.b510.examplex;

import java.util.Set;

import org.hibernate.Session;

/**
 *
 * @author XHW
 *
 * @date 2011-7-17
 *
 */
public class HibernateTest {
 public static void main(String[] args) {
  new HibernateTest().test();
 }
 public void test(){
  Session session=HibernateSessionFactoryUtil.getSessionFactory().openSession();
  session.beginTransaction();
  Category c1=(Category)session.get(Category.class, 1);
  System.out.println("id:"+c1.getId()+"  name: "+c1.getName());
  
  Set<Product> products=c1.getProducts();
  for(Product p:products){
   System.out.println(p.getName());
  }  
  session.getTransaction().commit();
  
  System.out.println("--------------------------------");
  Session session2=HibernateSessionFactoryUtil.getSessionFactory().openSession();
  session2.beginTransaction();
  Category c2=(Category)session2.get(Category.class, 1);
  Set<Product> products2=c1.getProducts();
  for(Product p2:products2){
   System.out.println(p2.getName());
  }  
  session2.getTransaction().commit();
 }
}

运行效果:

log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
log4j:WARN Please initialize the log4j system properly.
Hibernate:
    select
        category0_.id as id0_0_,
        category0_.name as name0_0_,
        category0_.description as descript3_0_0_
    from
        users.category category0_
    where
        category0_.id=?
id:1  name: java
Hibernate:
    select
        products0_.category_id as category2_1_,
        products0_.id as id1_,
        products0_.id as id1_0_,
        products0_.category_id as category2_1_0_,
        products0_.name as name1_0_,
        products0_.price as price1_0_,
        products0_.descripton as descripton1_0_
    from
        users.product products0_
    where
        products0_.category_id=?
java WEB开发与实战
java SE应用程序设计
--------------------------------
java WEB开发与实战
java SE应用程序设计

Hibernate二级缓存存集合对象相关推荐

  1. Hibernate二级缓存问题

    相关概念和定义 1.缓存的意义 把一些不常修改,但是又经常用的数据存放到内存中,这样能减少与数据库的交互,提升程序的性能 2.Hibernate中提供了两级缓存: 第一级别的缓存是Session级别的 ...

  2. Hibernate二级缓存的使用

    1启用Hibernate二级缓存 Hibernate二级缓存分为两部分,class缓存和查询缓存,其获取对象的方式有所不同,但两者也有联系,查询缓存必须以class缓存为基础才能起作用,否则只会使效率 ...

  3. Hibernate 二级缓存使用

    1启用Hibernate二级缓存 Hibernate二级缓存分为两部分,class缓存和查询缓存,其获取对象的方式有所不同,但两者也有联系,查询缓存必须以class缓存为基础才能起作用,否则只会使效率 ...

  4. HibernateEHCache –Hibernate二级缓存

    Welcome to the Hibernate Second Level Cache Example Tutorial. Today we will look into Hibernate EHCa ...

  5. hibernate二级缓存(三) 自定义实现一个简单的hibernate二级缓存

    hibernate二级缓存(三) 自定义实现一个简单的hibernate二级缓存 前面我们已经提及过hibernate内部为二级缓存的扩展做了很多的实现.我们只需要实现RegionFactoryTem ...

  6. Hibernate二级缓存详解(转)

    Hibernate二级缓存详解(转) 本文转载 http://www.blogjava.net/supercrsky/articles/238580.html 与Session相对的是,Session ...

  7. ssh整合hibernate 使用spring管理hibernate二级缓存,配置hibernate4.0以上二级缓存

    ssh整合hibernate 使用spring管理hibernate二级缓存,配置hibernate4.0以上二级缓存 hibernate  : Hibernate是一个持久层框架,经常访问物理数据库 ...

  8. Spring中启用Hibernate二级缓存步骤

    1.在applicationContext.xml配置文件中SessionFactory  bean中配置缓存 <!-- 配置会话工厂对象 --> <bean id="se ...

  9. Hibernate EHCache - Hibernate二级缓存

    Hibernate EHCache - Hibernate二级缓存 欢迎使用Hibernate二级缓存示例教程.今天我们将研究Hibernate EHCache,它是最受欢迎的Hibernate二级缓 ...

最新文章

  1. 新能源汽车市场发展趋势
  2. word List 17
  3. java能看懂代码不会写_为什么很多学习Java的人能看懂代码,但就是不会写!
  4. iOS原生推送(APNS)进阶iOS10推送图片、视频、音乐
  5. 局域网访问虚拟机VMware6.5
  6. congatec AG acquires Real-Time Systems GmbH
  7. python花瓣长度和花瓣宽度散点图鸢尾花_Python可视化seaborn练习题
  8. mysql transaction 实践小问题
  9. java线程知识点拾遗(CAS)
  10. 基于微信小程序的毕业设计题目(19)php菜谱美食小程序(含开题报告、任务书、中期报告、答辩PPT、论文模板)
  11. 宝鸡渭滨区11―12学年度第一学期高二期末联考试卷高二地理
  12. Android中文按拼音排序
  13. Win7 - 隐藏计算机中收藏夹和库
  14. 关于光伏电站后运维时代运维模式的创新思路与构想
  15. 前端开发:报错Error in... ”SyntaxError:Unexpected token u in JSON at position 0”…解决方法
  16. python文本去重复_python多个文本组合后去除重复项
  17. 你不是输给了物联网,是输给了不信物联网
  18. 安卓应用禁止分屏模式方法
  19. 大数据课程培训大纲详解,大数据培训学习内容
  20. java系统接口开发_模拟用户管理系统java接口开发与测试实战

热门文章

  1. 公众服务常用电话号码大全
  2. ruby 批量下载王者荣耀皮肤
  3. 编写自定义的字符串一致性匹配方法,只要两个字符串包含同样的字符, 不管字符的顺序如何,都认为两个字符串一致,如:”aabbcc”和”abcabc”被认为是一致的...
  4. 用 Markdown 写作(一)——添加文章页内导航
  5. 四行代码创建复杂(无限级)树
  6. 微软下周将发布重磅安全公告 修复40个漏洞
  7. sql serevr中脚本导出
  8. 揭秘:导致局域网网速变慢的五大真凶
  9. REPERTOIRE: CD
  10. HyperLogLog 命令详解