Hiberante3 一级缓存总结
1.2.3.使用HQL和SQL是查询属性级别的,是不使用一级缓存的!切记!!!!
4 . iterate 查询使用缓存,会发出查询Id的SQL和HQL语句,但不会发出查实体的,
它查询完会把相应的实体放到缓存里边,一些实体查询如果缓存里边有,就从缓存中查询,但还是会发出查询id的SQL和HQL语句。如果缓存中没有它会数据库中查询,然后将查询到的实体一个一个放到缓存中去,所以会有N+1问题出现。
5 . List()和iterate 查询区别:
使用iterate,list查询实体对象*N+1问题,在默认情况下,使用query.iterate查询,有可以能出现N+1问题
所谓的N+1是在查询的时候发出了N+1条sql语句1:首先发出一条查询对象id列表的sqlN:
根据id列表到缓存中查询,如果缓存中不存在与之匹配的数据,那么会根据id发出相应的sql语句list和iterate的区别?
list每次都会发出sql语句,list会向缓存中放入数据,而不利用缓存中的数据
iterate:在默认情况下iterate利用缓存数据,但如果缓存中不存在数据有可以能出现N+1问题
6.Get()和load(),iterate方法都会使用一级缓存.
7.hiberate3 session 存储过程如下:
例如 object 对象
Session.save(object);
这时候不会把数据放到数据库,会先放到session缓存中去,数据库中没有相应记录,session.flush();才发SQL和HQL语句,数据库中有了相应记录,
但是数据库用select查不到,这是跟数据库事物级别有关系,(这里在说下数据库的事务隔离级别一共四种如下:)
数据库隔离级别:
隔离级别 是否存在脏读 是否存在不可重复读 是否存在幻读;
Read UnCommited(未提交读) Y Y Y
Read Commited (提交读 oraclel默认) N Y Y
Repeatable Read(不可重复读(Msql默认)) N N Y
Serializable(使用很少) N N N
数据库隔离级别:
隔离级别 是否存在脏读 是否存在不可重复读 是否存在幻读;
Read UnCommited(未提交读) Y Y Y
Read Commited (提交读 oraclel默认) N Y Y
Repeatable Read(不可重复读(Msql默认)) N N Y
Serializable(使用很少) N N N
Session.beginTrransaction().commit();
事物提交后可以查询到了。
Session.flush()语句但是为什么不写呢,因为commit()会默认调用flush();
Hiberante3 二级缓存总结
Session.flush()语句但是为什么不写呢,因为commit()会默认调用flush();
1.Hibernate3的(sessionFactory)二级缓存和session级别的缓存一样都只对实体对象做缓存,不对属性级别的查询做缓存;二级缓存的生命周期和sessionFactory的生命周期是一样的,sessionFactory可以管理二级缓存;
2.sessionFactory级别的缓存,需要手动配置;所有的session可以共享sessionFactory 级别的缓存;(一般把一些不经常变化的实体对象放到sessionFactory级别的缓存中,适合放不经常变化的实体对象。)
3.Hiberante3二级缓存的配置和使用方法如下:
1. 必须把ehcache.jar包导入,然后到Hibernate3.2的etc文件下把ehcache.xml复制到工程src目录下(ehcache.xml里边的参数里边有详细英文说明);
(说明:ehcache.jar是第三方法的缓存产品,hiberante只是把它做了集成,还有好多第三方hibernate集成的缓存产品,相关说明请查阅hiberante3开发手册;ehcache是不支持分布应用的,如果有分布式需求,请换成支持分布式的二级缓存产品,hiberate3开发手册都有相头说明。配置方法都类似);
4.Hibernate3的二级缓存默认是开起的,也可以指定开起。在hibernate.cfg.xml 文件下配置如下:
*修改hibernate.cfg.xml文件,开户二级缓存;
<property name=”hibernate.cache.use_second_level_cache”>true</property>
*指定二级缓存产品的提供商;
<property name=”hibernate.cache.provider_class”>
org.hibernate.cache.EhCacheProvider
</property>
要让那些实体使用二级缓存,在hibernate.cfg.xml配置文件中加入:
<!—
让这个实体用二级缓存 也可以在实体中映射文件去配置即:
<cache usage="read-only"/>
-->
<class-cache class=”com.zzz.hibernate.ClassT” usage=”read-only”/>
Read-only一般使用这个策略,其它的hibernate3开发手册中也有详细介绍;
CacheMode去hibernate3开发手册中搜索这个关键字,可以找到一级缓存和二级缓存交互使用的问题;
相关推荐
- **缓存优化**:增加了第二级缓存支持,可以提高数据访问速度,同时支持第三方缓存提供商,如Ehcache。 - **事务和并发控制**:提供了更好的事务管理和并发控制策略,如乐观锁和悲观锁。 ### 3. Hibernate3.0 ...
Hibernate 3.0引入了二级缓存,通过插件如 Ehcache,可以极大地提升应用性能。一级缓存(Session级别的缓存)默认开启,而二级缓存则需要手动配置,它可以存储跨Session的对象,减少对数据库的访问。 七、性能优化 ...
它支持事务管理、查询语言(HQL)和第二级缓存。在Hibernate 3.0版本中,引入了Criteria API,提供了一种更灵活的查询方式,同时增强了对JPA的支持。 SQL Server 2005 是微软公司推出的一种关系型数据库管理系统,...
5. **缓存策略**: Hibernate提供了二级缓存机制,可以集成第三方缓存提供商如Ehcache,提高应用程序的性能。同时,它还支持查询缓存,将查询结果缓存起来,避免重复执行相同的SQL语句。 6. **实体生命周期**: ...
- **缓存机制增强**:提供了一级缓存和二级缓存机制,改善了应用程序的整体性能。 #### 三、Hibernate 基础概念 - **ORM(Object Relational Mapping)**:对象关系映射是一种将关系型数据库中的数据与对象模型...
二级缓存则可以通过插件进行配置,实现跨Session的缓存共享。 5. **事务管理**:Hibernate支持JTA(Java Transaction API)和JDBC事务管理,确保数据操作的一致性和原子性。 6. **关联映射**:Hibernate支持多种...
Hibernate3.0支持第二级缓存,可以提高数据访问性能。通过配置,可以使用第三方缓存服务如Ehcache来存储SessionFactory级别的数据。 10. **集合映射**: Hibernate3.0支持一对多、一对一、多对一、多对多等多种...
第二级缓存可配置,是SessionFactory级别的,可以跨Session共享数据。 七、事务处理 Hibernate支持JTA(Java Transaction API)和JDBC事务,通过`Session`的`beginTransaction()`、`commit()`、`rollback()`方法...
7. **缓存机制**:Hibernate支持一级缓存(Session级缓存)和二级缓存(SessionFactory级缓存),优化性能,减少对数据库的访问。 8. **关联映射**:Hibernate支持多种关联映射,如一对一、一对多、多对一、多对多...
这个"hibernate3.0引用库"包含了所有用于搭建和运行Hibernate 3.0项目所需的依赖文件,包括核心库、JDBC驱动、交易管理器和其他相关的支持库。 1. **Hibernate核心库**:Hibernate的核心库是整个框架的基础,它提供...
- **缓存机制**:合理配置Hibernate的缓存策略,如一级缓存、二级缓存,可以显著提升应用性能。 - **懒加载**:对于不需要立即加载的数据,采用懒加载可以减少不必要的数据库访问,提高效率。 - **批量操作**:通过...
#### 二、Spring2.0在Struts2.0与Hibernate3.0整合中的作用 **知识点4:Spring2.0简介** - **定义**: Spring是一个轻量级的Java EE开发框架,其核心特性包括依赖注入(DI)和面向切面编程(AOP)。 - **特点**: - ...
5. **缓存机制**:通过一级缓存和二级缓存,Hibernate可以显著提高数据访问性能,减少对数据库的直接操作。 6. **多态性支持**:Hibernate允许处理继承层次结构中的对象,使得数据库操作能更好地适应面向对象的设计...
9. **第一级缓存和第二级缓存**:Hibernate的缓存机制能提高数据访问效率,第一级缓存是Session级别的,第二级缓存则是SessionFactory级别的。 10. **实体的生命周期**:包括瞬时态、持久态、游离态和删除态,理解...
8. **缓存机制**:Hibernate包含一级缓存(Session级别的缓存)和二级缓存(SessionFactory级别的缓存)。一级缓存自动管理对象的状态,二级缓存可选,可以通过插件如Ehcache实现,以提高性能。 9. **事件监听器和...
`PersistenceContext`持有实体实例的缓存,分为第一级缓存(Session缓存)和第二级缓存(SessionFactory缓存)。理解这些缓存机制对于优化性能至关重要,比如,合理设置缓存策略可以减少对数据库的直接访问,提高...
此外,它还增强了缓存机制,包括第一级缓存和第二级缓存,以提升性能。 Struts2作为MVC(模型-视图-控制器)架构的实现,负责处理用户请求并展示结果。版本2.3.12包含了一些优化,如增强的拦截器、更灵活的配置选项...
以及第二级缓存支持,提高了数据访问性能。通过使用Hibernate,开发者可以减少对JDBC的直接操作,降低数据访问层的复杂性。 **人事管理系统设计** 在"struts1.2+Hibernate3.0编写的人事管理系统"中,通常会包含以下...
Hibernate 提供了第一级缓存(Session级别的缓存)和第二级缓存(SessionFactory级别的缓存)。第一级缓存默认开启,是透明的;第二级缓存则需要手动配置,可以使用第三方缓存提供商,如EhCache或Infinispan。 11....
7. **缓存机制**:Hibernate内置了二级缓存,可以通过插件扩展一级缓存,提高数据访问效率。一级缓存是Session级别的,而二级缓存则可跨Session共享。 8. **实体状态管理**:Hibernate识别四种实体状态:瞬时...