`
ChineseThink
  • 浏览: 143566 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Hibernate查询与缓存注意事项

 
阅读更多
文章源出处http://ajava.org/article-1531-1.html,写得不错分享下。
1.get()和load()方法的区别:

a.get()方法和load()方法的区别主要在于对二级缓存的使用上。

b.load()方法会使用二级缓存,而get()方法在一级缓存没有找到会直接查询数据库,不会去二级缓存中查找。

c.get()方法默认不支持lazy(延迟加载)功能,而load支持延迟加载

d.get()方法在查询不到数据时,返回null,而load因为支持延迟加载,只有在使用对象时才加载,所以如果数据库中不在数据load会抛出异常(org.hibernate.ObjectNotFoundException)。e.get()和load()只根据主键查询,不能根据其它字段查询,如果想根据非主键查询,可以使用HQL


2.list和iterator()方法之间的区别:(N+1?)
a.list()方法在执行时,直接运行查询结果所需要的查询语句。

b.iterator()方法则是先执行得到对象ID的查询,然后在根据每个ID值去取得所要查询的对象。

因此:
  对于list()方式的查询通常只会执行一个SQL语句,而对于iterator()方法的查询则可能需要执行N+1条SQL语句(N为结果集中的记录数).
  list()方法会一次活的所有的结果集对象,而且他会依据查询的结果初始化所有的结果集对象。如果在结果集非常庞大的时候会占据非常多的内存,甚至会造成内存溢出的情况发生。
  iterator()方法在执行时不会一次初始化所有的对象,而是根据对结果集的访问情况来初始化对象。一次在访问中可以控制缓存中对象的数量,以避免占用过多的缓存,导致内存溢出情况的发生。

缓存部分请参照:
http://www.iteye.com/topic/249465
分享到:
评论

相关推荐

    Hibernate一级缓存和二级缓存

    **使用注意事项** 1. **并发控制**:在多线程环境下,二级缓存可能引发并发问题,需要合理配置并发策略。 2. **缓存同步**:数据库和缓存的数据同步是挑战,需要处理好缓存失效和更新的问题。 3. **性能优化**:...

    hibernate二级缓存示例源码

    注意事项 - 虽然二级缓存提高了效率,但过度依赖可能会导致数据一致性问题。因此,需要根据业务需求谨慎选择缓存策略。 - 更新操作可能导致缓存中的数据过期,需要正确处理缓存同步,例如使用`@CacheEvict`注解...

    Hibernate 二级缓存 总结整理

    ### 五、最佳实践与注意事项 1. **选择合适的缓存策略**:根据业务场景选择合适的缓存策略,如频繁更新的表使用读/写策略,静态数据使用只读策略。 2. **合理设置缓存大小**:避免缓存过大导致内存消耗过多,或者...

    hibernate开启二级缓存和查询缓存

    注意事项 - 二级缓存和查询缓存都有可能导致数据一致性问题,因为它们都是基于最终一致性的。在高并发或需要强一致性的场景下,要谨慎使用。 - 对于更新频繁的数据,避免使用二级缓存,因为这可能导致脏读或丢失...

    hibernate二级缓存(包括注解方式)

    注意事项 - 数据一致性:二级缓存在更新时可能存在延迟,因此对于高并发、强一致性的业务场景,需要谨慎使用。 - 性能优化:合理设置缓存大小,避免过多数据占用内存。同时,根据业务需求选择合适的缓存策略。 - ...

    hibernate 二级缓存

    **四、注意事项** 1. 数据一致性:由于二级缓存是跨会话的,所以在并发环境下需谨慎处理数据一致性问题,避免脏读、不可重复读和幻读。 2. 缓存失效:合理设置缓存过期时间或使用事件驱动的缓存清理机制,确保缓存...

    Hibernate_二级缓存 实验心得,手册

    #### 五、注意事项 - **缓存一致性**:在使用二级缓存时,要注意维护缓存与数据库之间的一致性,避免出现脏数据。 - **缓存失效**:合理设置缓存的失效时间,避免缓存占用过多内存资源。 - **查询缓存使用**:对于...

    hibernate二级缓存

    #### 四、注意事项 1. **性能考量**:虽然二级缓存可以显著提高查询性能,但也可能会占用较多内存资源。因此,在设计缓存策略时需要权衡性能与资源消耗之间的平衡。 2. **并发控制**:在多用户环境中,需要特别注意...

    hibernate缓存

    #### 五、缓存的使用注意事项 1. **列表(List)**:使用`list`方法查询时,Hibernate会在一级缓存中查找结果;如果没有命中,则会查询数据库,并将结果放入缓存。 2. **迭代器(Iterator)**:使用`iterator`方法...

    Hibernate的cache缓存解析

    #### 使用Hibernate缓存的注意事项 1. **缓存一致性**:在使用缓存时,特别是二级缓存,需要确保数据的一致性。可以通过设置缓存更新策略来实现这一点。 2. **缓存大小管理**:合理配置缓存的大小,避免因缓存过大...

    Hibernate缓存详解

    注意事项 - **缓存同步**:由于二级缓存可能导致数据不一致,因此需要正确配置缓存同步策略,确保多个事务之间的一致性。 - **缓存大小**:根据实际应用需求调整缓存大小,避免内存溢出。 - **缓存失效**:合理...

    Hibernate二级缓存架包.rar

    注意事项 - **并发问题**:二级缓存可能会引发并发控制问题,如脏读、不可重复读、幻读,需要谨慎处理。 - **缓存穿透**:防止无效数据被缓存,可能导致大量数据库请求。 - **缓存雪崩**:大量缓存同一时间过期,...

    hibernate查询缓存详细分析

    七、注意事项与最佳实践 1. 谨慎使用查询缓存,因为它依赖于数据的稳定性。如果数据经常变化,使用查询缓存可能会导致返回过时的结果。 2. 对于不经常改变且需要高性能的查询,启用查询缓存是很好的选择。 3. 及时...

    Hibernate二级缓存的应用

    **五、使用注意事项** 1. **并发控制**:在多线程环境下,需考虑并发问题,防止数据不一致。 2. **缓存穿透**:避免因大量不存在的查询导致缓存无效,可以使用布隆过滤器等技术。 3. **缓存雪崩**:合理设置缓存过期...

    Spring4+Hibernate4二级缓存实例源码

    7. **注意事项**:二级缓存虽然能提升性能,但也可能导致数据一致性问题,因为缓存中的数据可能与数据库中的数据不同步。因此,在处理高并发和实时性要求高的场景时,需要谨慎使用二级缓存,并结合缓存更新策略来...

    hibernate 事务管理注意事项

    ### hibernate 事务管理注意事项 在使用Hibernate框架进行数据库操作时,事务管理是确保数据一致性和安全性的重要环节。本文将围绕“hibernate 事务管理注意事项”这一主题展开讨论,通过对给定文件中的标题、描述...

    Hibernate 2nd-level cache: JBoss Caching 配置与注意事项

    《Hibernate二级缓存:JBoss Caching配置与注意事项详解》 在Java的持久化框架Hibernate中,二级缓存是提高应用程序性能的重要手段。它能够存储已经加载过的对象,避免重复查询数据库,从而显著减少数据库访问次数...

Global site tag (gtag.js) - Google Analytics