Hibernate框架基础知识第五天

第五天Hibernate优化

1.关于缓存的理解。

     缓存是介于应用程序和物理数据源之间,其作用是为了降低应用程序对物理数据源访问的频次,从而提高了应用的运行性能。缓存内的数据是对物理数据源中的数据的复制,应用程序在运行时从缓存读写数据,在特定的时刻或事件会同步缓存和物理数据源的数据。

2.Hibernate的缓存。

一级缓存:针对的是session的缓存,关于对session的处理方案:

  clear() :Completely clear the session.清空session,该清空操作只对于要保存的、删除的和修改的数据起作用,不涉及查询的结果。

close() :End the session byreleasing the JDBC connection and cleaning up.释放并清空JDBC连接。但是不一定非得关闭session。

flush(): Force this session to flush.强制刷新流的缓冲。flush必须在一个操作单元结束之后且在提交事务和关闭连接之前被调用。例如插入一条数据。

二级缓存:

二级缓存也称为进程级的缓存或SessionFactory级的缓存,二级缓存可以被所有的session共享

二级缓存的生命周期和SessionFactory的生命周期一致,SessionFactory可以管理二级缓存。

二级缓存的配置。

1. 将ehcache.xml文件拷贝到src下,修改为以下内容:


配置代码参考:

<?xml version="1.0"encoding="UTF-8"?> 

<ehcache>

   <diskStore path="java.io.tmpdir"/>

   <defaultCache

        maxElementsInMemory="10000"

        eternal="false"

        timeToIdleSeconds="120"

        timeToLiveSeconds="120"

        overflowToDisk="true"

        />

   <cache name="com.gxa.bj.model.Cate" 

                eternal="false" 

               maxElementsInMemory="100" 

                timeToIdleSeconds="1200" 

               timeToLiveSeconds="1200" 

               overflowToDisk="false"> 

   </cache>

</ehcache>

2.将缓存产品的jar包加入到项目中。如采用的是ehcache的是这个二级缓存。那么将\hibernate-release-4.3.10.Final\lib\optional\ehcache下面的所有jar包拷贝到项目中

注意:如果此时的slf4jjar包提示版本过低(运行的时候),需要将jre的版本升级为1.7以上的。

3.配置hibernate.cfg.xml文件。

<!-- 启用二级缓存,这也是它的默认配置 -->

                   <propertyname="hibernate.cache.use_second_level_cache">true</property>

                  

                   <propertyname="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</property>

                   <!-- 指定缓存配置文件位置 -->

                   <propertyname="hibernate.cache.provider_configuration_file_resource_path">

                            ehcache.xml

                   </property>

 

 

 

二级缓存的清理问题:

1.如果需要清理二级缓存。

HibernateSessionFactory.getSessionFactory().getCache().evictEntityRegion(Cate.class);//清理所有二级缓存中的所有的Cate对象的数据

HibernateSessionFactory.getSessionFactory().getCache().evictEntity(Cate.class,2032);//清理所有二级缓存中的主键为2032的Cate对象的数据。

哪些方法所取的数据进入缓存。

   get()方法获取的数据是进入到缓存中(首先是从数据库里获取数据,获取数据之后,数据进入到缓存中),get方法会从二级缓存中读取数据。

   load()方式是直接从缓存(首先从一级缓存中,如果一级没有,那么就从二级查询,如果二级没有数据,那么就从数据库中查询数据,当数据库中没有数据的时候抛出异常)。

  list()方法是不从二级缓存中读取数据的,也不从一级缓存取数据。但是list得到的数据会进入缓存。

iterate()方法虽然是还是会执行从表中取ID的查询,但是查询的数据是从缓存中得到的。如果缓存没有数据,才会从数据库中查询。

 

 

关于Hibernate中的抓取策略

1)延迟加载。

   在查询数据的时候,那么这个对象的集合属性的数据并不会立马从数据库中查询。比如我们在查询Cate分类的数据的时候,默认情况下,并不会查询Cate分类所对应的产品的数据。

在分类表的映射配置文件中的set节点的配置。默认情况下,

lazy=”true”,延迟加载开启。

Lazy=“false”,延迟加载关闭。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 学习Java框架和库需要以下几个步骤: 1. 了解Java语言基础:在学习Java框架和库之前,你需要对Java语言有一定的了解和掌握。 2. 选择要学习的框架和库:选择一个你感兴趣或者有实际需求的框架或库进行学习。 3. 获取相关资料:搜索在线文档、教程、视频等资料,了解框架和库的架构、功能和使用方法。 4. 实践:根据学习到的知识,实践一些简单的代码示例和项目,加深对框架和库的理解。 5. 持续学习:不断提高自己的技能,不断学习新的框架和库。 总的来说,学习Java框架和库需要耐心、勤奋和持续的努力。 ### 回答2: 学习Java框架和库的方法有以下几点: 首先,要掌握Java基础知识。Java框架和库建立在Java语言基础之上,因此要先熟悉Java的语法、面向对象等基础知识。 其次,要选择合适的学习资源。可以通过阅读相关的书籍、教程和文档来学习Java框架和库。例如,可以选择经典的Java框架Spring和Hibernate的官方文档来学习其用法和原理。 第三,动手实践是学习的关键。可以通过编写小项目或者参与开源项目来实践所学的框架和库。在实践中会遇到各种问题和挑战,通过解决问题来加深理解和掌握。 此外,还可以参加一些线下或线上的培训课程和培训班,通过与其他学习者和专业人士的互动来加速学习过程。可以在线上论坛或社交媒体上建立技术交流的网络,与其他开发者分享经验和学习资源。 最后,要保持学习的持续性和积极性。Java框架和库的更新迭代很快,需要时刻关注最新的发展和趋势。可以参与相关的技术讨论、阅读博客和参加技术交流活动来与其他人保持学习的积极性。 总之,学习Java框架和库需要具备扎实的Java基础知识,选择合适的学习资源,动手实践,并保持持续学习和积极性。通过这些方法,可以有效提高学习效率和掌握所学的Java框架和库。 ### 回答3: 学习Java框架和库可以通过以下几个步骤来实现。 1. 建立基础知识:在开始学习Java框架和库之前,首先要确保自己对Java编程语言有基本的了解。学习Java的语法规则、面向对象编程的概念以及常用的类和方法等。 2. 选择合适的学习资源:在学习Java框架和库之前,可以先找一些适合自己的学习资源,如在线教程、书籍或视频教程等。选择适合自己学习风格和水平的资源,有助于更好地理解和掌握相关知识。 3. 实践项目:学习Java框架和库最好的方法是通过实践项目来巩固所学知识。可以尝试开发一些小型的应用程序,运用所学的框架和库来解决实际问题。实践中不断调试和改进,有助于加深对框架和库的理解。 4. 参与讨论和交流:在学习Java框架和库的过程中,可以积极参与相关的讨论和交流。可以加入一些Java开发者社区或论坛,与其他开发者一起分享和学习经验。通过与他人的交流,不仅可以解决遇到的问题,还可以获得更多的学习资源和建议。 5. 深入学习和掌握:一旦掌握了基本的Java框架和库知识,可以进一步深入学习和掌握更高级的概念和技术。可以阅读更深入的书籍或文档,参加培训课程或研讨会,提升自己的技术水平。 总之,学习Java框架和库需要建立扎实的Java编程基础,选择适合自己的学习资源并进行实践项目,参与讨论和交流,不断深入学习和掌握相关知识将帮助提高自己的技术能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值