public void persist(Object entity)
persist方法可以将实例转换为managed(托管)状态。在调用flush()方法或提交事物后,实例将会被插入到数据库中。
对不同状态下的实例A,persist会产生以下操作:
1. 如果A是一个new状态的实体,它将会转为managed状态;
2. 如果A是一个managed状态的实体,它的状态不会发生任何改变。但是系统仍会在数据库执行INSERT操作;
3. 如果A是一个removed(删除)状态的实体,它将会转换为受控状态;
4. 如果A是一个detached(分离)状态的实体,该方法会抛出IllegalArgumentException异常,具体异常根据不同的JPA实现有关。
public void merge(Object entity)
merge方法的主要作用是将用户对一个detached状态实体的修改进行归档,归档后将产生一个新的managed状态对象。
对不同状态下的实例A,merge会产生以下操作:
1. 如果A是一个detached状态的实体,该方法会将A的修改提交到数据库,并返回一个新的managed状态的实例A2;
2. 如果A是一个new状态的实体,该方法会产生一个根据A产生的managed状态实体A2;
3. 如果A是一个managed状态的实体,它的状态不会发生任何改变。但是系统仍会在数据库执行UPDATE操作;
4. 如果A是一个removed状态的实体,该方法会抛出IllegalArgumentException异常。
public void refresh(Object entity)
refresh方法可以保证当前的实例与数据库中的实例的内容一致。
对不同状态下的实例A,refresh会产生以下操作:
1. 如果A是一个new状态的实例,不会发生任何操作,但有可能会抛出异常,具体情况根据不同JPA实现有关;
2. 如果A是一个managed状态的实例,它的属性将会和数据库中的数据同步;
3. 如果A是一个removed状态的实例,不会发生任何操作;
4. 如果A是一个detached状态的实体,该方法将会抛出异常。
public void remove(Object entity)
remove方法可以将实体转换为removed状态,并且在调用flush()方法或提交事物后删除数据库中的数据。
对不同状态下的实例A,remove会产生以下操作:
1. 如果A是一个new状态的实例,A的状态不会发生任何改变,但系统仍会在数据库中执行DELETE语句;
2. 如果A是一个managed状态的实例,它的状态会转换为removed;
3. 如果A是一个removed状态的实例,不会发生任何操作;
4. 如果A是一个detached状态的实体,该方法将会抛出异常。
相关推荐
jpa--7.api(EntityManager其他方法)jpa--7.api(EntityManager其他方法)jpa--7.api(EntityManager其他方法)jpa--7.api(EntityManager其他方法)
本文将详细介绍JPA中两个重要的方法:`merge()`和`refresh()`,以及它们在不同实体状态下的行为。 ### `merge()` 方法 `merge()` 方法是JPA中一个关键的操作,主要用于将脱离管理(detached)状态的实体与数据库...
本示例“spring boot整合JPA——demo”将演示如何在Spring Boot项目中配置和使用JPA。 首先,我们需要理解Spring Boot与JPA的关系。Spring Boot是基于Spring框架的快速开发工具,它通过自动化配置减少了常规设置...
4. **JPA持久化步骤**:通常涉及实体的状态转换(瞬时态->持久态、持久态->临时态、持久态->脱管态),以及使用`EntityManager`的方法(persist、merge、remove、find)。 ### 三、JPA实体 1. **实体定义**:实体...
jpa--6.api(EntityManager实体的状态)jpa--6.api(EntityManager实体的状态)jpa--6.api(EntityManager实体的状态)jpa--6.api(EntityManager实体的状态)
JPA的体系架构主要由以下四个组成部分组成: * Entity Bean:是Java中的一个类,用于描述一个实体的结构和行为。 * EntityManager:是JPA中的核心接口,提供了一种管理实体的机制。 * Query:是JPA中的查询机制,...
本篇学习笔记主要探讨了JPA中实体的状态及其转换,包括New、Managed、Detached和Removed四种状态。 首先,实体(Entity)是JPA中的核心概念,它代表数据库中的一个记录。实体的身份(Identity Fields)用于唯一标识...
它提供了诸如`persist()`, `merge()`, `remove()`等方法来处理持久化操作。 3. **实体工厂(EntityManagerFactory)**: 用于创建实体管理器实例。它是线程安全的,通常在应用启动时创建一次。 4. **数据访问对象...
例如,你可以使用`entityManager.persist()`来保存新实体,`entityManager.find()`来查找实体,`entityManager.merge()`来更新实体,以及`entityManager.remove()`来删除实体。EntityManager还提供了事务管理和查询...
这段代码首先创建了一个新的`Person`实例,然后调用`entityManager.persist(person)`将这个对象标记为持久化状态,JPA会在适当的时间(如事务提交时)将这个对象的数据插入到对应的数据库表中。 2. 读取(Read) ...
- **EntityManager的接口方法**:除了之前提到的`persist`、`merge`、`remove`、`refresh`和`flush`方法之外,`EntityManager`还提供了其他接口方法,用于执行查询、管理事务等操作。 #### 实体对象的生命周期与...
`@Entity` 注解用于标记一个Java类为一个实体类,这个类将被JPA用来映射到数据库中的一个表。默认情况下,表名是类名的小写形式,但可以通过`@Table`注解来指定不同的表名。 2. **@Table** `@Table` 注解用来指定...
**Java Persistence API (JPA)** 是Java平台上的一个标准,用于管理关系数据库中的对象-关系映射(ORM)。它提供了一种方式,让开发者可以用面向对象的编程模型来操作数据库,而无需直接编写SQL语句。JPA允许你在...
- **删除(Remove)**:`entityManager.remove(entity)` 方法用于删除指定的实体。 #### 查询 JPA 提供了丰富的查询方式: - **JPQL(Java Persistence Query Language)**:类似于 SQL,但面向对象,用于查询...
- **持久化 Entity**:EntityManager 提供了 persist 方法来保存新的实体实例到数据库。 - **获取 Entity**:可以使用 EntityManager 的 find 方法来检索数据库中的实体实例。 - **更新 Entity**:更新实体实例...
在JPA中创建实体非常直观,可以通过构造器或setter方法设置实体属性,然后通过`EntityManager`的`persist()`方法将实体持久化到数据库中。例如,对于一个名为`User`的简单实体: ```java User user = new User(); ...
本书介绍了Java EE规范的三大主要规范JSF、EJB 3和JPA,其中JSF是Sun公司提供的JSF RI;EJB 3部分则包含Session Bean、Message Driven Bean的详细介绍。本书内容主要包括三部分,第一部分介绍Java EE开发的基础知识...
3. ** EntityManager**:它是JPA的主要接口,提供了对数据库操作的方法,如`persist()`用于保存新实体,`merge()`用于更新已存在的实体,`remove()`用于删除实体,以及`find()`用于查询实体。 4. **查询语言(JPQL...
`EntityManager`是JPA的主要接口,用于执行CRUD操作。通常,我们会在`Persistence`配置文件中定义数据源,并通过`Persistence.createEntityManagerFactory()`创建`EntityManagerFactory`,然后用它来获取`...
在EJB(Enterprise JavaBeans)环境中,Session bean 或 MDB(Message-Driven Bean)与Entity bean交互时,EntityManager是主要的接口,它负责处理Entity bean的所有查询、插入、更新和删除操作。EntityManager实例...