`
yeelor
  • 浏览: 418004 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JPA EntityManager的四个主要方法 ——persist,merge,refresh和remove

    博客分类:
  • JPA
 
阅读更多

public void persist(Object entity)

persist方法可以将实例转换为managed(托管)状态。在调用flush()方法或提交事物后,实例将会被插入到数据库中。

 

对不同状态下的实例Apersist会产生以下操作:

1.       如果A是一个new状态的实体,它将会转为managed状态;

2.       如果A是一个managed状态的实体,它的状态不会发生任何改变。但是系统仍会在数据库执行INSERT操作;

3.       如果A是一个removed(删除)状态的实体,它将会转换为受控状态;

4.       如果A是一个detached(分离)状态的实体,该方法会抛出IllegalArgumentException异常,具体异常根据不同的JPA实现有关。

public void merge(Object entity)

         merge方法的主要作用是将用户对一个detached状态实体的修改进行归档,归档后将产生一个新的managed状态对象。

 

对不同状态下的实例Amerge会产生以下操作:

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方法可以保证当前的实例与数据库中的实例的内容一致。

 

对不同状态下的实例Arefresh会产生以下操作:

1.       如果A是一个new状态的实例,不会发生任何操作,但有可能会抛出异常,具体情况根据不同JPA实现有关;

2.       如果A是一个managed状态的实例,它的属性将会和数据库中的数据同步;

3.       如果A是一个removed状态的实例,不会发生任何操作;

4.       如果A是一个detached状态的实体,该方法将会抛出异常。

public void remove(Object entity)

        remove方法可以将实体转换为removed状态,并且在调用flush()方法或提交事物后删除数据库中的数据。

 

对不同状态下的实例Aremove会产生以下操作:

1.       如果A是一个new状态的实例,A的状态不会发生任何改变,但系统仍会在数据库中执行DELETE语句;

2.       如果A是一个managed状态的实例,它的状态会转换为removed

3.       如果A是一个removed状态的实例,不会发生任何操作;

4.       如果A是一个detached状态的实体,该方法将会抛出异常。

  • 大小: 55.5 KB
分享到:
评论

相关推荐

    jpa--7.api(EntityManager其他方法)

    jpa--7.api(EntityManager其他方法)jpa--7.api(EntityManager其他方法)jpa--7.api(EntityManager其他方法)jpa--7.api(EntityManager其他方法)

    JPA中的常用方法.docx

    本文将详细介绍JPA中两个重要的方法:`merge()`和`refresh()`,以及它们在不同实体状态下的行为。 ### `merge()` 方法 `merge()` 方法是JPA中一个关键的操作,主要用于将脱离管理(detached)状态的实体与数据库...

    spring boot整合JPA——demo

    本示例“spring boot整合JPA——demo”将演示如何在Spring Boot项目中配置和使用JPA。 首先,我们需要理解Spring Boot与JPA的关系。Spring Boot是基于Spring框架的快速开发工具,它通过自动化配置减少了常规设置...

    JPA核心知识总结

    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--6.api(EntityManager实体的状态)

    jpa开发手册[文].pdf

    JPA的体系架构主要由以下四个组成部分组成: * Entity Bean:是Java中的一个类,用于描述一个实体的结构和行为。 * EntityManager:是JPA中的核心接口,提供了一种管理实体的机制。 * Query:是JPA中的查询机制,...

    jpa学习笔记 介绍了jpa中state的概念和应用

    本篇学习笔记主要探讨了JPA中实体的状态及其转换,包括New、Managed、Detached和Removed四种状态。 首先,实体(Entity)是JPA中的核心概念,它代表数据库中的一个记录。实体的身份(Identity Fields)用于唯一标识...

    JPA Demo 简单的了解下jpa

    它提供了诸如`persist()`, `merge()`, `remove()`等方法来处理持久化操作。 3. **实体工厂(EntityManagerFactory)**: 用于创建实体管理器实例。它是线程安全的,通常在应用启动时创建一次。 4. **数据访问对象...

    springboot整合mybatis整合jpa使用entityManger

    例如,你可以使用`entityManager.persist()`来保存新实体,`entityManager.find()`来查找实体,`entityManager.merge()`来更新实体,以及`entityManager.remove()`来删除实体。EntityManager还提供了事务管理和查询...

    jpa对表的crud操作

    这段代码首先创建了一个新的`Person`实例,然后调用`entityManager.persist(person)`将这个对象标记为持久化状态,JPA会在适当的时间(如事务提交时)将这个对象的数据插入到对应的数据库表中。 2. 读取(Read) ...

    JPA基本概念实例操作

    - **EntityManager的接口方法**:除了之前提到的`persist`、`merge`、`remove`、`refresh`和`flush`方法之外,`EntityManager`还提供了其他接口方法,用于执行查询、管理事务等操作。 #### 实体对象的生命周期与...

    JPA学习笔记(二)——JPA 注解

    `@Entity` 注解用于标记一个Java类为一个实体类,这个类将被JPA用来映射到数据库中的一个表。默认情况下,表名是类名的小写形式,但可以通过`@Table`注解来指定不同的表名。 2. **@Table** `@Table` 注解用来指定...

    jpa例子jpajpa

    **Java Persistence API (JPA)** 是Java平台上的一个标准,用于管理关系数据库中的对象-关系映射(ORM)。它提供了一种方式,让开发者可以用面向对象的编程模型来操作数据库,而无需直接编写SQL语句。JPA允许你在...

    JPA (一)

    - **删除(Remove)**:`entityManager.remove(entity)` 方法用于删除指定的实体。 #### 查询 JPA 提供了丰富的查询方式: - **JPQL(Java Persistence Query Language)**:类似于 SQL,但面向对象,用于查询...

    详细介绍 jpa 开发文档

    - **持久化 Entity**:EntityManager 提供了 persist 方法来保存新的实体实例到数据库。 - **获取 Entity**:可以使用 EntityManager 的 find 方法来检索数据库中的实体实例。 - **更新 Entity**:更新实体实例...

    JPA CRDU Programming Patterns

    在JPA中创建实体非常直观,可以通过构造器或setter方法设置实体属性,然后通过`EntityManager`的`persist()`方法将实体持久化到数据库中。例如,对于一个名为`User`的简单实体: ```java User user = new User(); ...

    经典JAVA EE企业应用实战基于WEBLOGIC JBOSS的JSF+EJB 3+JPA整合开发——源码.part1

    本书介绍了Java EE规范的三大主要规范JSF、EJB 3和JPA,其中JSF是Sun公司提供的JSF RI;EJB 3部分则包含Session Bean、Message Driven Bean的详细介绍。本书内容主要包括三部分,第一部分介绍Java EE开发的基础知识...

    jpa开发实例和文档

    3. ** EntityManager**:它是JPA的主要接口,提供了对数据库操作的方法,如`persist()`用于保存新实体,`merge()`用于更新已存在的实体,`remove()`用于删除实体,以及`find()`用于查询实体。 4. **查询语言(JPQL...

    基于JPA的CRUD例子

    `EntityManager`是JPA的主要接口,用于执行CRUD操作。通常,我们会在`Persistence`配置文件中定义数据源,并通过`Persistence.createEntityManagerFactory()`创建`EntityManagerFactory`,然后用它来获取`...

    EntityManager

    在EJB(Enterprise JavaBeans)环境中,Session bean 或 MDB(Message-Driven Bean)与Entity bean交互时,EntityManager是主要的接口,它负责处理Entity bean的所有查询、插入、更新和删除操作。EntityManager实例...

Global site tag (gtag.js) - Google Analytics