`
yun342173024
  • 浏览: 73813 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

jpa persist,meger,remove,find方法介绍

 
阅读更多
jpa规范提供了EntityManager接口来操作数据库,它定义了一些操作数据库的方法,在这里介绍几个重要的方法,就是crud方法。
1.persist(Object entity)方法
  这个方法把一个实体加入持久化上下文中,也就是缓存中,在事务提交或者调用flush()方法的时候,把这个实体保存到数据库中(执行insert语句),如果实体已存在,则抛出EntityExistsException异常,缓存则不存在了。

2.find(Class<T> entityClass,Object primaryObject)
  根据主键从数据库中查询一个实体,这个方法首先从缓存中去查找,如果找不到,就从数据库中去找,并把它加入到缓存中。
3.merge(T object)
把一个对象加入到当前的持久化上下文中,就是把一个对象从detach转变为managed,并返回这个对象。当一个对象设置了主键,并调用此方法,就会从数据库中根据主键查找到该对象把它放到持久化上下文中,当事物提交的时候,如果对象发生了改变,更新该对象的改变到数据库中,如果对象没有改变,则什么也不做,如果对象没有设置主键,则插入该对象到数据库中。
4.remove(Object entity)
  根据主键从数据库中删除一个对象,这个对象的状态必须是managed,否则会抛出IllegalArgumentException,在一个事务中删除一个对象,假如实体管理器对象为em,
em.remove(em.merge(entity)),如果直接调用em.remove(entity);会抛出异常
IllegalArgumentException。

下面介绍对象的状态
1. new/transient
  新建的对象,或者是说这个对象没有加入到持久化上下文当中。
2 managed
  对象存在持久化上下文中
3 detach
  对象脱离了持久化上下文
 
分享到:
评论

相关推荐

    JPA CRDU Programming Patterns

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

    详细介绍 jpa 开发文档

    ### 详细介绍 JPA 开发文档 #### 一、发展中的持久化技术 ##### 1.1 JDBC 在早期的企业级应用程序开发中,JDBC (Java Database Connectivity) 是一种广泛使用的数据库连接技术。JDBC 提供了一种标准的方式来访问...

    jpa对表的crud操作

    在JPA中,创建新记录通常使用`EntityManager`的`persist()`方法。例如,创建一个新的`Person`对象并将其保存到数据库: ```java public void save() { Person person = new Person("aaa", 121); entityManager....

    jpa开发手册[文].pdf

    在JPA中,使用remove方法来删除Entity。 4.7 脱离/附合(Detach/Merge) 脱离/附合是将Entity从EntityManager中脱离或附合的过程。 5. JPA Query JPA Query是JPA中的查询机制,提供了一种查询实体的机制。 JPA ...

    jpa的自定义CURD

    在JPA中,创建新记录通常是通过`EntityManager`的`persist()`方法完成的。首先,你需要定义一个实体类,它代表数据库中的表,并使用`@Entity`注解标记。然后,创建实体对象并设置其属性,最后调用`persist()`方法将...

    JPA (一)

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

    关于SH JPA 简单的CRUD操作

    创建新实体通常涉及到使用`EntityManager`的`persist()`方法。在SH JPA中,你可以定义一个实体类,比如`User`,并使用`@Entity`注解标记。然后,通过`@Id`指定主键字段,如`id`,并使用`GeneratedValue`控制自动...

    JPA核心知识总结

    4. **JPA持久化步骤**:通常涉及实体的状态转换(瞬时态-&gt;持久态、持久态-&gt;临时态、持久态-&gt;脱管态),以及使用`EntityManager`的方法(persist、merge、remove、find)。 ### 三、JPA实体 1. **实体定义**:实体...

    jpa开发实例和文档

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

    07_JPA详解_使用JPA加载_更新_删除对象.zip

    通过`entityManager.persist()`方法可将瞬态对象变为持久态。已持久化的对象,其属性更改后调用`entityManager.flush()`会触发更新。 #### 3.2 merge()方法 对于已脱管的实体,使用`merge()`方法将其重新与数据库...

    传智播客JPA学习笔记.pdf

    JPA提供了加载(find, persist, merge, refresh, detach等方法)、更新(通过Entity Manager操作)和删除(remove方法)对象的API,这些操作遵循Unit Of Work和Identity Map设计模式。 **8. 分析JPA与持久化实现...

    jpa操作mysql数据库

    例如,`persist()`方法用于新增,`merge()`用于更新,`remove()`用于删除,`find()`用于根据ID查找。 6. **查询**:JPA提供了两种查询方式:JPQL(Java Persistence Query Language)和 Criteria API。JPQL类似于...

    基于JPA的CRUD例子

    创建操作(Create):使用`EntityManager`的`persist()`方法将新实体保存到数据库。 ```java EntityManager entityManager = entityManagerFactory.createEntityManager(); EntityTransaction tx = entityManager....

    JPA连接数据库增删改查

    1. **增加(Create)**: 创建一个新的实体实例,然后调用`EntityManager.persist()`方法将其保存到数据库。 ```java EntityManagerFactory emf = Persistence.createEntityManagerFactory("myPersistenceUnit"); ...

    Open JPA2 employee 简单例子

    在这个例子中,我们首先创建了一个新的Employee对象,然后开始事务并调用persist()方法保存到数据库。查询时,我们使用find()方法根据ID获取Employee。更新时,先改变对象状态,然后调用merge()方法同步到数据库。...

    jpasql.rar

    `EntityManager`提供了方法如`persist()`, `merge()`, `remove()`, `find()`等来管理实体的生命周期。 **Entity(实体)** 在JPA中,代表数据库表的一个Java类,通常使用`@Entity`注解标记。实体类的属性对应于...

    JPA底层

    2. **查找实体**:使用`find()`方法根据主键查找实体,或使用`createQuery()`或`createNamedQuery()`执行JPQL查询。 3. **更新实体**:对实体进行修改后,调用`merge()`方法将变更同步到数据库。 4. **删除实体**...

    07_传智播客JPA详解_使用JPA加载_更新_删除对象

    另外,`persist()`方法常用于新对象的保存,而`remove()`方法则用于删除对象。 在删除对象时,JPA提供了两种主要方式。一种是直接调用`remove()`方法,传入要删除的实体对象;另一种是先`detach()`对象,然后在查询...

    04_JPA详解_第一个JPA实例与JPA主键生成策略.zip

    5. **编写DAO层**: 使用EntityManager进行CRUD操作,如`persist()`、`find()`、`merge()`和`remove()`。 ### JPA主键生成策略 1. **GenerationType.IDENTITY**: 这种策略依赖于数据库自增字段,适用于MySQL、SQL ...

    jpa教程

    例如,我们可以使用`EntityManager`的`persist()`方法来保存实体,`find()`方法来检索,`merge()`方法来更新,以及`remove()`方法来删除。同时,`Query`接口允许我们构建复杂的查询,比如使用JPQL(Java Persistence...

Global site tag (gtag.js) - Google Analytics