在使用JPA的MERGE的时候要注意:
1、将多执行一次SELECT的操作。
2、Either way will add an entity to a PersistenceContext, the difference is in what you do with the entity afterwards.
Persist takes an entity instance, adds it to the context and makes that instance managed (ie future updates to the entity will be tracked)
Merge creates a new instance of your entity, copies the state from the supplied entity, and makes the new copy managed. The instance you pass in will not be managed (any changes you make will not be part of the transaction - unless you call merge again).
所以,在应当使用PERSIST的时候,绝不应该使用MERGE,一是会带性能的损耗,二是如果后续有使用,尤其有多对一的情况,会带来关联了未保存对象的错误!
分享到:
相关推荐
**Java Persistence API (JPA)** 是Java平台上的一个标准,用于管理关系数据库中的对象-关系映射(ORM)。它提供了一种方式,让开发者可以用面向对象的编程模型来操作数据库,而无需直接编写SQL语句。JPA允许你在...
**JPA(Java Persistence API)**是Java平台上的一个标准,用于管理关系数据库中的数据,它简化了在Java应用程序中存储、检索和管理对象的工作。JPA是Java EE和Java SE环境中的一种ORM(Object-Relational Mapping)...
Authors Mike Keith, Merrick Schincariol and Massimo Nardone take a hands-on approach, based on their wealth of experience and expertise, by giving examples to illustrate each concept of the API and ...
**JPA(Java Persistence API)简介** Java Persistence API(JPA)是Java平台上的一个标准,用于管理和持久化Java对象到关系数据库。它是Java EE和Java SE环境中处理对象关系映射(ORM)的一种规范,旨在简化...
- **更新(Merge)**:对获取的实体进行修改后,调用 `entityManager.merge(entity)` 将更新同步到数据库。 - **删除(Remove)**:`entityManager.remove(entity)` 方法用于删除指定的实体。 #### 查询 JPA 提供...
**Java Persistence API (JPA)** 是Java平台上的一个标准,用于管理关系数据库中的数据。它为Java开发者提供了一种对象关系映射(ORM)机制,将业务对象与数据库表进行映射,使得开发者可以使用面向对象的方式来操作...
《Pro JPA2:精通Java™ Persistence API》是一本由Mike Keith和Merrick Schincariol撰写的关于Java持久化API(JPA)的权威指南。本书深入探讨了JPA2,即Java Persistence API的第二版,是Java EE 6标准的一部分。...
Java Persistence API(JPA)是Java平台上的一个标准,用于管理关系数据库中的对象持久化。它简化了在Java应用程序中存储、检索和管理数据的过程,是Enterprise JavaBeans(EJB)的一部分,也是Spring框架中的一个...
Java Persistence API (JPA) 是Java企业版5(Java EE 5)的一部分,与Enterprise JavaBeans(EJB)3.0规范一起,极大地简化了Java持久化。它提供了一种对象关系映射方法,允许您以标准、可移植的方式声明性地定义...
3. ** EntityManager**:它是JPA的主要接口,提供了对数据库操作的方法,如`persist()`用于保存新实体,`merge()`用于更新已存在的实体,`remove()`用于删除实体,以及`find()`用于查询实体。 4. **查询语言(JPQL...
Gemini JPA是在OSGi环境下(特别是Eclipse RCP)中使用的Java持久化框架。OSGi是一个模块化服务平台,允许在Java环境中动态地安装、启动、停止和卸载组件,而不会影响其他组件的正常运行。在Java开发中,持久化层...
Spring框架的核心特性包括依赖注入(DI)和面向切面编程(AOP),并且它还提供了对数据库操作的支持,这主要通过Spring Data JPA和Java Persistence API(JPA)实现。 Spring注解是Spring框架中的一大特色,它极大...
Spring Data JPA 是一个由 Spring 框架提供的强大库,它极大地简化了基于 Java Persistence API (JPA) 的数据库访问。JPA 是 Java 平台上的标准 ORM(对象关系映射)规范,允许开发者使用面向对象的方式处理数据库...
**Spring Data JPA** 是一个基于 **Java** 的开源框架,它是 **Spring Framework** 的一个模块,主要用于简化 **Java Persistence API (JPA)** 的使用。JPA 是 Java 平台上的一个标准,用于管理和持久化应用程序的...
本压缩包文件"04_JPA详解_第一个JPA实例与JPA主键生成策略.zip"包含了关于如何在实际项目中运用JPA,以及理解JPA主键生成策略的详细教程。 ### JPA基础 1. **JPA简介**: JPA是Java EE的一部分,它提供了一套规范,...
例如,`persist()`方法用于新增,`merge()`用于更新,`remove()`用于删除,`find()`用于根据ID查找。 6. **查询**:JPA提供了两种查询方式:JPQL(Java Persistence Query Language)和 Criteria API。JPQL类似于...
Spring Data JPA API。 Spring Data JPA 开发文档。 官网 Spring Data JPA API。
4. **JPA持久化步骤**:通常涉及实体的状态转换(瞬时态->持久态、持久态->临时态、持久态->脱管态),以及使用`EntityManager`的方法(persist、merge、remove、find)。 ### 三、JPA实体 1. **实体定义**:实体...