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中创建实体非常直观,可以通过构造器或setter方法设置实体属性,然后通过`EntityManager`的`persist()`方法将实体持久化到数据库中。例如,对于一个名为`User`的简单实体: ```java User user = new User(); ...
### 详细介绍 JPA 开发文档 #### 一、发展中的持久化技术 ##### 1.1 JDBC 在早期的企业级应用程序开发中,JDBC (Java Database Connectivity) 是一种广泛使用的数据库连接技术。JDBC 提供了一种标准的方式来访问...
在JPA中,创建新记录通常使用`EntityManager`的`persist()`方法。例如,创建一个新的`Person`对象并将其保存到数据库: ```java public void save() { Person person = new Person("aaa", 121); entityManager....
在JPA中,使用remove方法来删除Entity。 4.7 脱离/附合(Detach/Merge) 脱离/附合是将Entity从EntityManager中脱离或附合的过程。 5. JPA Query JPA Query是JPA中的查询机制,提供了一种查询实体的机制。 JPA ...
在JPA中,创建新记录通常是通过`EntityManager`的`persist()`方法完成的。首先,你需要定义一个实体类,它代表数据库中的表,并使用`@Entity`注解标记。然后,创建实体对象并设置其属性,最后调用`persist()`方法将...
- **删除(Remove)**:`entityManager.remove(entity)` 方法用于删除指定的实体。 #### 查询 JPA 提供了丰富的查询方式: - **JPQL(Java Persistence Query Language)**:类似于 SQL,但面向对象,用于查询...
创建新实体通常涉及到使用`EntityManager`的`persist()`方法。在SH JPA中,你可以定义一个实体类,比如`User`,并使用`@Entity`注解标记。然后,通过`@Id`指定主键字段,如`id`,并使用`GeneratedValue`控制自动...
4. **JPA持久化步骤**:通常涉及实体的状态转换(瞬时态->持久态、持久态->临时态、持久态->脱管态),以及使用`EntityManager`的方法(persist、merge、remove、find)。 ### 三、JPA实体 1. **实体定义**:实体...
3. ** EntityManager**:它是JPA的主要接口,提供了对数据库操作的方法,如`persist()`用于保存新实体,`merge()`用于更新已存在的实体,`remove()`用于删除实体,以及`find()`用于查询实体。 4. **查询语言(JPQL...
通过`entityManager.persist()`方法可将瞬态对象变为持久态。已持久化的对象,其属性更改后调用`entityManager.flush()`会触发更新。 #### 3.2 merge()方法 对于已脱管的实体,使用`merge()`方法将其重新与数据库...
JPA提供了加载(find, persist, merge, refresh, detach等方法)、更新(通过Entity Manager操作)和删除(remove方法)对象的API,这些操作遵循Unit Of Work和Identity Map设计模式。 **8. 分析JPA与持久化实现...
例如,`persist()`方法用于新增,`merge()`用于更新,`remove()`用于删除,`find()`用于根据ID查找。 6. **查询**:JPA提供了两种查询方式:JPQL(Java Persistence Query Language)和 Criteria API。JPQL类似于...
创建操作(Create):使用`EntityManager`的`persist()`方法将新实体保存到数据库。 ```java EntityManager entityManager = entityManagerFactory.createEntityManager(); EntityTransaction tx = entityManager....
1. **增加(Create)**: 创建一个新的实体实例,然后调用`EntityManager.persist()`方法将其保存到数据库。 ```java EntityManagerFactory emf = Persistence.createEntityManagerFactory("myPersistenceUnit"); ...
在这个例子中,我们首先创建了一个新的Employee对象,然后开始事务并调用persist()方法保存到数据库。查询时,我们使用find()方法根据ID获取Employee。更新时,先改变对象状态,然后调用merge()方法同步到数据库。...
`EntityManager`提供了方法如`persist()`, `merge()`, `remove()`, `find()`等来管理实体的生命周期。 **Entity(实体)** 在JPA中,代表数据库表的一个Java类,通常使用`@Entity`注解标记。实体类的属性对应于...
2. **查找实体**:使用`find()`方法根据主键查找实体,或使用`createQuery()`或`createNamedQuery()`执行JPQL查询。 3. **更新实体**:对实体进行修改后,调用`merge()`方法将变更同步到数据库。 4. **删除实体**...
另外,`persist()`方法常用于新对象的保存,而`remove()`方法则用于删除对象。 在删除对象时,JPA提供了两种主要方式。一种是直接调用`remove()`方法,传入要删除的实体对象;另一种是先`detach()`对象,然后在查询...
5. **编写DAO层**: 使用EntityManager进行CRUD操作,如`persist()`、`find()`、`merge()`和`remove()`。 ### JPA主键生成策略 1. **GenerationType.IDENTITY**: 这种策略依赖于数据库自增字段,适用于MySQL、SQL ...
例如,我们可以使用`EntityManager`的`persist()`方法来保存实体,`find()`方法来检索,`merge()`方法来更新,以及`remove()`方法来删除。同时,`Query`接口允许我们构建复杂的查询,比如使用JPQL(Java Persistence...