1 hibernate 中的缓存问题
A 一级缓存和session的生命周期一样的,在比如
Student student=(Student)session.load(Student.class,1);
这样的语句中,如果两次发出这样的语句,是可以用到缓存的。
同样,用get也是可以用缓存的。
B 如果是用迭代查询,比如这样:
Student student=(Student)session.createquery("from student s where s.id=1").iterate().next();
之类的话。是能用缓存的。
但如果查询普通属性的话,比如
Student student=(Student)session.createquery("select s.name from student s where s.id=1").iterate().next();
如果两次查询的话,则不能用缓存,是要再发多条sql语句的。
所以一级缓存是缓存实体对象的。
B 以上说的是在一个session中发出的。如果在两个session中的话。它们之间不能用缓存。
C 在同一个session中,先用session.load查询,然后session.clear(),
再用session.load(),则很明显不能用缓存了,肯定要发出sql.可见
session.clear()是可以清除一级缓存的。可以看到,hibernate的一级缓存
是咱们控制不了的。
D 避免一次性大量实体数据入库,先flush,后clear.
2 hibernate 的ecache的设置,见http://www.cnblogs.com/jackyrong/archive/2008/08/29/1279083.html
3 查询缓存:
Query query=session.createQuery(".......");
query.setCacheable(true);
要注意的是,查询级缓存,只对如query,list()起作用,对query.iterate()不起作用
注意查询缓存的时候,在hibernate.cfg.xml中
<property name="hibernate.cache.use_query_cache">true</property>
分享到:
相关推荐
7. **注意事项**:二级缓存虽然能提升性能,但也可能导致数据一致性问题,因为缓存中的数据可能与数据库中的数据不同步。因此,在处理高并发和实时性要求高的场景时,需要谨慎使用二级缓存,并结合缓存更新策略来...
合理设置缓存大小、过期策略,以及注意缓存更新同步问题,都是使用二级缓存时需要注意的地方。 7. **并发控制**: 在多线程环境中,二级缓存需要处理并发问题。Hibernate提供了read-write、nonstrict-read-write、...
同时,项目中可能包含了一些常见的注意事项和陷阱,例如数据类型转换问题、空指针异常、事务处理不当等,这些都是实际开发中需要注意的地方。通过这个项目,你不仅能学会如何使用Hibernate,还能提升解决实际问题的...
### Hibernate参考手册中文版知识点概览 #### 一、简介 Hibernate是一款开源的对象关系...需要注意的是,随着技术的发展,Hibernate也在不断演进,后续版本可能会有所变化,建议开发者持续关注官方文档及社区动态。
要在Hibernate中启用Ehcache缓存,需要完成以下几个步骤: 1. **配置Ehcache**:在项目的`src`目录下添加`ehcache.xml`文件,并配置缓存策略。 ```xml <!-- 配置默认缓存 --> eternal="false" ...
通过提供一套强大的API,Hibernate允许开发人员将注意力集中在应用程序的核心业务逻辑上,而非繁琐的数据访问细节。 #### Hibernate的核心优势 1. **轻量级封装**:Hibernate是对JDBC的一种轻量级封装,这意味着它...
在实际应用Hibernate的过程中,除了基本配置和工具的使用外,还有一些需要注意的经验和技巧: - **3.1 优化查询性能** - 使用二级缓存来提高查询效率。 - 适当调整查询语句,避免不必要的数据加载。 - **3.2 处理...
3. **Hibernate的Hibernate.initialize()方法**:在需要使用懒加载属性的地方,手动调用此方法初始化代理对象。但这需要在业务代码中显式处理,不够优雅。 4. **使用Hibernate的Criteria API或HQL查询**:在查询时...
如果对象已经在缓存中,`get`方法会直接从缓存中返回对象,而不会去数据库中查找,这样提高了性能。此外,`get`方法在找不到对应对象时会返回`null`,这是它与`load`的一个重要区别。 相对地,`load`方法则是延迟...
- **缓存策略**:Hibernate提供了二级缓存功能,可以有效减少对数据库的访问次数,提高系统性能。 - **批量操作**:支持批量插入、批量更新等操作,这些操作可以在一定程度上优化应用程序的性能。 - **事务管理**:...
3. **配置Hibernate**:配置Hibernate的SessionFactory,并在Spring配置文件中声明,以便在需要的地方注入SessionFactory。同时,配置数据源和事务管理器。 4. **整合Action和Service**:在Action类中,通过@...
- 为了性能考虑,可以使用二级缓存,如 EhCache 或 Redis,配合 Hibernate 提供的缓存支持。 - 注意合理设计实体关系,避免 N+1 查询问题。 - 使用 Spring Data JPA 或 Spring Data JDBC,提供更高级别的抽象,...
在Java开发领域,Spring和Hibernate是两个非常重要的框架,它们分别负责应用的业务逻辑管理和数据持久化。...同时,注意在整合过程中可能会遇到的依赖冲突、版本兼容性问题,及时解决以确保项目的顺利运行。
- 实体类和映射文件:实体类代表数据库中的表,通过hibernate.cfg.xml或@Entity注解指定映射关系。 - Session接口:主要负责对象的持久化操作,如保存、更新、删除和查询。 - Criteria和HQL:两种查询语言,HQL是...
- Hibernate 的配置文件(通常为`hibernate.cfg.xml`)是设置数据库连接、方言、缓存策略等核心参数的地方。在高级使用中,我们可能会涉及动态加载配置、多数据源配置以及自定义属性设置。 - SessionFactory 的...
以下是一些重要的注意事项: 1. **数据缓存策略**:对于频繁读取但很少修改的数据,使用缓存技术如OSCache是非常有益的。它能减少数据库的访问压力,提高系统响应速度。 2. **混合使用Hibernate和JDBC**:在混合...
- 适当地缓存对象,提升性能,但要注意内存消耗。 - 了解并遵循ORM的最佳实践,如避免N+1查询问题,合理设计对象关系,防止大数据量的懒加载等。 通过深入了解Spring.NET和NHibernate的原理和使用,开发者可以构建...
7. **处理并发**:OSCache提供了线程安全的缓存操作,但在并发场景下,开发者仍需注意避免不必要的锁竞争,合理设计缓存策略。 8. **监控和调试**:OSCache提供了一个Web管理界面,可以查看缓存的状态、统计信息和...
- 如果涉及到事务处理,注意在恰当的地方开始和结束事务,保证数据的一致性。 4. **配置文件**: - `struts.xml`:在Struts2的配置文件中,需要定义处理分页请求的动作,指定对应的Action类和结果视图。 - `...