加载中...

Hibernate(十四)缓存


一、什么是缓存

缓存是介于应用程序和永久必数据存储源之间,目的是为了降低应用程序直接读写永久必数据存储源的频率,从而提高运行性能

缓存通常是在内存中的如:

Office中的Word、excel

Hibernater中的Session以及SessionFactory

二、对旬在JVM中的生命周期

  • new 语句创建JAVA对象时,JVM会为当前对象分配一个内存
  • 只要当前对象被其它资源引用,就会一直存在内存中
  • 如果当前对象不被其它资源引用,就结结束生命周期
  • 一个对象被其它生命周期未结束的对象引用,则这个对象的生命周期也不会结束

三、缓存作用范围

四、缓存插件

ehcache.xml

  1. <?xml version='1.0' encoding='UTF-8'?>
  2. <ehcache>
  3. <diskStore path="java.io.tempdir"/>
  4. <!--
  5. maxElementsInMemory:允许缓存可以存储的总记录数
  6. eternal:当前缓存是否永远不过期
  7. overflowToDisk:当前缓存中的数据达到最大值时,是否把缓存数据写入本地硬盘
  8. timeToIdleSeconds:当前缓存最大闲置时间,超过该时间则销毁缓存
  9. timeToLiveSeconds:设置缓存超时时间,当缓存创建后,达到该时间就自动销毁
  10. -->
  11. <defaultCache
  12. maxElementsInMemory = "5"
  13. eternal = "false"
  14. overflowToDisk = "true"
  15. timeToIdleSeconds = "15"
  16. timeToLiveSeconds = "120"
  17. />
  18. </ehcache>

hibernate.cfg.xml

  1. <?xml version='1.0' encoding='UTF-8'?>
  2. <!DOCTYPE hibernate-configuration PUBLIC
  3. "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
  4. "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
  5.  
  6. <!-- Generated by MyEclipse Hibernate Tools. -->
  7. <hibernate-configuration>
  8.  
  9. <session-factory>
  10. <property name="hbm2ddl.auto">update</property>
  11. <property name="dialect">
  12. org.hibernate.dialect.Oracle9Dialect
  13. </property>
  14. <property name="connection.url">
  15. jdbc:oracle:thin:@10.0.0.11:1521:ORCL
  16. </property>
  17. <property name="connection.username">demo</property>
  18. <property name="connection.password">demo</property>
  19. <property name="connection.driver_class">
  20. oracle.jdbc.driver.OracleDriver
  21. </property>
  22. <!-- 在Hibernate配置文件中激活ehcache二级缓存 -->
  23. <property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property>
  24. <property name="hibernate.cache.use_query_cache">true</property>
  25. <mapping resource="demo/entity/Bird.hbm.xml" />
  26. <!-- 添加使用Hibernate注解的实体Bean,而不是映射文件 -->
  27. <mapping class="demo.annotations.entity.Weapon" />
  28. </session-factory>
  29.  
  30. </hibernate-configuration>

实体类配置

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  3. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
  4. <!--
  5. Mapping file autogenerated by MyEclipse Persistence Tools
  6. -->
  7. <hibernate-mapping>
  8. <class name="demo.entity.Bird" table="BIRD">
  9. <!-- <cache usage="read-write"/> -->
  10. <id name="birdId" type="long">
  11. <column name="id" precision="22" scale="0" />
  12. <generator class="native" />
  13. </id>
  14. <property name="name" type="string">
  15. <column name="NAME" length="50" />
  16. </property>
  17. </class>
  18. </hibernate-mapping>

 


还没有评论.