文章源出处
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
分享到:
相关推荐
**使用注意事项** 1. **并发控制**:在多线程环境下,二级缓存可能引发并发问题,需要合理配置并发策略。 2. **缓存同步**:数据库和缓存的数据同步是挑战,需要处理好缓存失效和更新的问题。 3. **性能优化**:...
注意事项 - 虽然二级缓存提高了效率,但过度依赖可能会导致数据一致性问题。因此,需要根据业务需求谨慎选择缓存策略。 - 更新操作可能导致缓存中的数据过期,需要正确处理缓存同步,例如使用`@CacheEvict`注解...
### 五、最佳实践与注意事项 1. **选择合适的缓存策略**:根据业务场景选择合适的缓存策略,如频繁更新的表使用读/写策略,静态数据使用只读策略。 2. **合理设置缓存大小**:避免缓存过大导致内存消耗过多,或者...
注意事项 - 二级缓存和查询缓存都有可能导致数据一致性问题,因为它们都是基于最终一致性的。在高并发或需要强一致性的场景下,要谨慎使用。 - 对于更新频繁的数据,避免使用二级缓存,因为这可能导致脏读或丢失...
注意事项 - 数据一致性:二级缓存在更新时可能存在延迟,因此对于高并发、强一致性的业务场景,需要谨慎使用。 - 性能优化:合理设置缓存大小,避免过多数据占用内存。同时,根据业务需求选择合适的缓存策略。 - ...
**四、注意事项** 1. 数据一致性:由于二级缓存是跨会话的,所以在并发环境下需谨慎处理数据一致性问题,避免脏读、不可重复读和幻读。 2. 缓存失效:合理设置缓存过期时间或使用事件驱动的缓存清理机制,确保缓存...
#### 五、注意事项 - **缓存一致性**:在使用二级缓存时,要注意维护缓存与数据库之间的一致性,避免出现脏数据。 - **缓存失效**:合理设置缓存的失效时间,避免缓存占用过多内存资源。 - **查询缓存使用**:对于...
#### 四、注意事项 1. **性能考量**:虽然二级缓存可以显著提高查询性能,但也可能会占用较多内存资源。因此,在设计缓存策略时需要权衡性能与资源消耗之间的平衡。 2. **并发控制**:在多用户环境中,需要特别注意...
#### 五、缓存的使用注意事项 1. **列表(List)**:使用`list`方法查询时,Hibernate会在一级缓存中查找结果;如果没有命中,则会查询数据库,并将结果放入缓存。 2. **迭代器(Iterator)**:使用`iterator`方法...
#### 使用Hibernate缓存的注意事项 1. **缓存一致性**:在使用缓存时,特别是二级缓存,需要确保数据的一致性。可以通过设置缓存更新策略来实现这一点。 2. **缓存大小管理**:合理配置缓存的大小,避免因缓存过大...
注意事项 - **缓存同步**:由于二级缓存可能导致数据不一致,因此需要正确配置缓存同步策略,确保多个事务之间的一致性。 - **缓存大小**:根据实际应用需求调整缓存大小,避免内存溢出。 - **缓存失效**:合理...
注意事项 - **并发问题**:二级缓存可能会引发并发控制问题,如脏读、不可重复读、幻读,需要谨慎处理。 - **缓存穿透**:防止无效数据被缓存,可能导致大量数据库请求。 - **缓存雪崩**:大量缓存同一时间过期,...
七、注意事项与最佳实践 1. 谨慎使用查询缓存,因为它依赖于数据的稳定性。如果数据经常变化,使用查询缓存可能会导致返回过时的结果。 2. 对于不经常改变且需要高性能的查询,启用查询缓存是很好的选择。 3. 及时...
**五、使用注意事项** 1. **并发控制**:在多线程环境下,需考虑并发问题,防止数据不一致。 2. **缓存穿透**:避免因大量不存在的查询导致缓存无效,可以使用布隆过滤器等技术。 3. **缓存雪崩**:合理设置缓存过期...
7. **注意事项**:二级缓存虽然能提升性能,但也可能导致数据一致性问题,因为缓存中的数据可能与数据库中的数据不同步。因此,在处理高并发和实时性要求高的场景时,需要谨慎使用二级缓存,并结合缓存更新策略来...
### hibernate 事务管理注意事项 在使用Hibernate框架进行数据库操作时,事务管理是确保数据一致性和安全性的重要环节。本文将围绕“hibernate 事务管理注意事项”这一主题展开讨论,通过对给定文件中的标题、描述...
《Hibernate二级缓存:JBoss Caching配置与注意事项详解》 在Java的持久化框架Hibernate中,二级缓存是提高应用程序性能的重要手段。它能够存储已经加载过的对象,避免重复查询数据库,从而显著减少数据库访问次数...