Hibernate session FlushMode有五种属性:
1、NEVEL:已经废弃了,被MANUAL取代了
2 MANUAL:
如果FlushMode是MANUAL或NEVEL,在操作过程中hibernate会将事务设置为readonly,所以在Spring与Hibernate集成后进行增加、删除或修改操作过程中会出现如下错误
org.springframework.dao.InvalidDataAccessApiUsageException: Write
operations are not allowed in read-only mode (FlushMode.NEVER) - turn
your Session into FlushMode.AUTO or remove 'readOnly' marker from
transaction definition;
解决办法:配置事务,spring会读取事务中的各种配置来覆盖hibernate的session中的FlushMode;
3 AUTO
设置成auto之后,当程序进行查询、提交事务或者调用session.flush()的时候,都会使缓存和数据库进行同步,也就是刷新数据库。
4 COMMIT
提交事务或者session.flush()时,刷新数据库;查询不刷新
5 ALWAYS:
每次进行查询、提交事务、session.flush()的时候都会刷数据库
ALWAYS和AUTO的区别:当hibernate缓存中的对象被改动之后,会被标记为脏数据(即与数据库不同步了)。当
session设置为FlushMode.AUTO时,hibernate在进行查询的时候会判断缓存中的数据是否为脏数据,是则刷数据库,不是则不刷,
而always是直接刷新,不进行任何判断。很显然auto比always要高效得多。
JPA的FlushModeType只有两种:
1、COMMIT:仅当提交事务时才能进行刷新
2、AUTO:(默认)在执行查询时进行刷新
分享到:
相关推荐
JPA注解和Hibernate建表 一、JPA概述 Java Persistence API(JPA)是Sun官方提出的Java持久化规范,它只是一个规范不是一个产品。JPA的主要目标是提供一种简洁、易用的方式来访问、操作和管理Java应用程序中的数据...
本篇将详细讲解如何将Spring 3.0.5与JPA 2.0(基于Hibernate 3.6)进行集成,以构建高效、灵活的应用程序。 首先,让我们了解Spring 3.0.5的核心特性。Spring 3.0引入了若干改进和新特性,包括对JSR-303(Bean ...
在本项目中,我们主要探讨如何使用Spring3 MVC REST与JPA2(通过Hibernate 3.6.1实现)构建一个投票系统。Spring MVC作为Java领域广泛应用的MVC框架,可以方便地处理HTTP请求和响应,而JPA2(Java Persistence API的...
2. **JPA Provider**:因为Hibernate也是JPA的提供商,所以可能包含`hibernate-entitymanager`包,它提供了JPA的实现。 3. **数据库驱动**:为了与特定的数据库进行通信,你需要相应的数据库驱动,例如`mysql-...
### JPA与Hibernate的优缺点分析 #### Java Persistence API (JPA) Java Persistence API(简称JPA)是Java平台提供的一套对象关系映射(ORM)标准,它旨在为Java应用提供一种统一、灵活的数据持久化解决方案。JPA...
### JPA与Hibernate的关系 #### 一、JPA概述 **Java Persistence API (JPA)** 是一种用于管理Java应用中的关系型数据库的标准API。它的主要目的是为了提供一套统一的、可移植的对象-关系映射(ORM)解决方案。JPA...
Hibernate不仅实现了JPA规范,还提供了许多额外的功能,如二级缓存、查询语言HQL和 Criteria API等,极大地简化了Java开发人员与数据库交互的工作。 在"jpa之使用hibernate示例代码"中,我们可能会涉及以下关键知识...
**JPA(Java Persistence API)与Hibernate:** JPA是Java平台上的一个标准,它定义了如何在Java应用中管理关系数据库。它提供了一种面向对象的方式来操作数据库,通过ORM(对象关系映射)技术将Java对象与数据库表...
在模型层,定义与数据库表对应的实体类,使用JPA的`@Entity`注解标识。同时,使用`@Table`指定表名,`@Id`标记主键,`@GeneratedValue`定义主键生成策略。 最后,在控制器层,使用`@RestController`或`@Controller`...
**JPA反向工程与Hibernate反向工程** Java Persistence API(JPA)是Java平台上的一个标准,用于管理和持久化Java对象到关系数据库。它提供了一种面向对象的方式来操作数据库,使得开发人员可以专注于业务逻辑,而...
在本项目中,我们主要探讨的是如何将Spring3、JPA2(Hibernate4)整合到一个Dynamic Web Project中,以实现高效、灵活的企业级数据库管理。这是一个基础的Java Web应用程序开发教程,旨在帮助开发者理解如何在...
Struts2.1.8、JPA3.0(Hibernate实现)和Spring2.5是三个重要的Java开发框架,它们的整合为构建大型企业级应用提供了强大的支持。在这个压缩包中,包含了这些框架的核心库和其他相关依赖,方便开发者快速集成到自己...
jpa基于hibernate的实现所需的jar之一,一共有3个jar 这是从里面提取出来的 hibernate-annotations-3.4.0 hibernate-distribution-3.3.1 hibernate-entitymanager-3.4.0 一共16个jar包括一个Mysql的JDBC驱动
标题“Spring + JPA + Hibernate配置”涉及到的是Java开发中常用的三个框架——Spring、Java Persistence API (JPA) 和Hibernate的集成与配置。这是一份关于如何将这些框架结合使用的教程或参考资料,可能包含了实现...
3. **hibernate-jpa-2.x-api**: 这个jar包包含了JPA的API定义,是与Hibernate交互时所需的依赖。 4. **hibernate-validator**: Hibernate的验证框架,符合JSR-303/349标准,用于校验实体属性。 5. **javassist**: ...
3. **JDBC驱动**: 根据你的数据库类型,你需要相应的JDBC驱动jar包,如MySQL Connector/J、Oracle JDBC驱动等,以便Hibernate与数据库进行通信。 4. **持久化元数据**: 包括Hibernate的配置文件(如hibernate.cfg....
在本文中,我们将深入探讨如何在Spring Boot 2.1.4.RELEASE项目中结合JPA(Java Persistence API)和Hibernate实现Redis作为二级缓存。首先,我们需要理解这些技术的基本概念。 Spring Boot 是一个用于简化Spring...
而**Hibernate**则是一个实现了JPA规范的开源ORM框架,它简化了数据库操作,使得开发者可以使用Java对象来操作数据库,而无需编写大量的SQL语句。 在**JPA + Hibernate**的例子中,通常会涉及以下几个核心概念: 1...
**JPA(Java Persistence API)与Hibernate:关系数据库持久化框架** JPA是Java平台上的一个标准,由JSR 317定义,用于管理Java应用程序中的对象持久性。它是Oracle公司提出的,目的是为了简化Java应用程序对关系...
赠送jar包:hibernate-jpa-2.1-api-1.0.2.Final.jar; 赠送原API文档:hibernate-jpa-2.1-api-1.0.2.Final-javadoc.jar; 赠送源代码:hibernate-jpa-2.1-api-1.0.2.Final-sources.jar; 赠送Maven依赖信息文件:...