`

JPA 映射实体生命周期

阅读更多
JPA  实体生命周期分为4种状态,其实跟HIBERNATE的映射实体差不多。分为:新建,受管,分离,删除。

新建:此时的内存中已经创建了实体实例( 比如 NEW People() ),但是还没有同数据库或持久化上下文进行关联,所以目前它还不是一个标准的持久实体身份。所以对它的任何改变,都不会同步到数据库中。

受管:此时实体已经在数据库中存在了持久化身份,并且同持久化上下文进行了关联,一般来说,在调用JPA的persist API后,实体实例已处于受管状态了。在修改实体之后,当事务提交,或显示调用flush()操作,实体状态会同步到数据库中。

分离:还具有持久化身份,但是不在同持久化上下文关联。

删除:同持久化上下文关联,但是客户已经打算从数据库销毁这一实体。


JPA的EntityManager也为我们准备好了API来完成对这些实体的操作:

persist方法将实体变为受管状态,持久化到数据库。merge方法将当前的实体状态合并(更新)到当前持久化上下文中。remove方法直接从数据库里销毁实体(删除),remove方法只是将数据库里的实体删除,并没有销毁内存里的实体对象,当事务提交或者调用flush方法,数据库里的实体才会被删除。
分享到:
评论

相关推荐

    56_传智播客巴巴运动网_设置产品实体对象的JPA映射

    EntityManager是JPA的主要接口,负责实体的生命周期管理。例如,创建新产品: ```java EntityManagerFactory emf = Persistence.createEntityManagerFactory("巴巴运动网PU"); EntityManager em = emf....

    学习hibernate必读,JPA2新特征和JPA2映射的神秘之旅。

    - **实体监听器(Entity Listeners)**:允许在特定的生命周期事件上添加回调方法,提高代码的复用性和可维护性。 - **多租户支持(Multitenancy)**:使应用程序能够服务于多个客户,每个客户的数据独立存储。 -...

    jpa例子jpajpa

    一般在应用启动时创建,然后在整个应用生命周期内复用。 3. **实体管理器(EntityManager)**: `EntityManager`是与数据库交互的主要接口。它可以负责实体的持久化、查询、更新和删除等操作。 4. **查询(Query)*...

    Pro JPA2 精通JPA2

    5. **事件监听器**:允许在实体生命周期的特定点触发自定义代码,例如,在实体保存前进行预处理或在实体删除后清理资源。 6. **批处理操作**:支持批量更新和删除操作,减少数据库交互次数,提升效率。 ### 学习...

    JPA源文件/jpa学习

    通过阅读和研究JPA的源代码,开发者可以了解到JPA如何处理实体的生命周期,如加载、保存、更新和删除,以及如何执行JPQL查询和Criteria查询。此外,还可以了解JPA如何与不同的持久化提供者(如Hibernate、Eclipse...

    openjpa-manual

    2. **实体生命周期管理**:包括创建、更新、删除实体等操作。 3. **实体身份管理**:处理实体的身份问题,如查找实体、比较实体等。 4. **缓存管理**:控制实体缓存的行为。 5. **查询工厂**:用于创建各种类型的...

    D_JPA_02_简单实体映射和API.zip

    `EntityManager`负责管理实体的生命周期,包括创建、查询、更新和删除操作。例如,创建新实体: ```java EntityManager entityManager = entityManagerFactory.createEntityManager(); EntityTransaction ...

    java JPA 批注参考

    - `@PrePersist`,`@PostPersist`,`@PreRemove`,`@PostRemove`,`@PreUpdate`,`@PostUpdate`,`@PostLoad`:定义实体生命周期中的回调方法。 - `@EntityListeners`:注册监听器类,处理实体的生命周期事件。 9...

    JPA 标注 JPA标签手册

    - `@PrePersist`, `@PostPersist`, `@PreRemove`, `@PostRemove`, `@PreUpdate`, `@PostUpdate`:生命周期回调方法。 6. **查询和结果集映射**: - `@NamedQuery`, `@NamedNativeQuery`:预定义SQL或JPQL查询。 ...

    jpa经典文档呀

    3. **实体管理工厂(EntityManagerFactory)**:是创建EntityManager实例的工厂类,通常在应用程序启动时创建一次,然后在整个应用生命周期中重复使用。 4. **持久化单元(Persistence Unit)**:定义了JPA配置的...

    JPA基本概念实例操作

    - **EntityManager简介**:`EntityManager`,也称为实体管理器,是Java Persistence API (JPA) 中的核心接口之一,负责处理实体对象的生命周期管理和持久化操作。它由`EntityManagerFactory`创建。 - **...

    spring-data-JPA帮助文档

    Spring Data JPA支持实体生命周期事件的监听,如@PrePersist、@PostPersist、@PreUpdate和@PostRemove等,可以在特定的实体操作前后执行自定义逻辑。 十、性能优化 Spring Data JPA提供了一些性能优化策略,如懒...

    jpa的工程

    6. **实体状态管理**:JPA管理实体的生命周期,包括瞬时、持久化、托管和脱管四种状态,帮助开发者理解对象和数据库之间的关系。 在实际项目中,使用JPA通常会结合一个实现JPA规范的持久层框架,比如Hibernate、...

    JPA中文解释,JPA的API

    例如,`EntityManager`是JPA的核心接口,负责管理实体的生命周期;`EntityTransaction`用于处理事务;而`Query`接口则提供了执行JPQL(Java Persistence Query Language)查询的能力。 标签中提到了"JPA注解参考_...

    JPA全套技术代码.rar

    5. **生命周期回调(Lifecycle Callbacks)**: 支持在实体的生命周期事件(如创建、更新、删除)中执行自定义逻辑。 6. **缓存(Caching)**: 提供一级缓存(实体管理器内部)和二级缓存(可选,跨会话)以提高性能...

    Pro JPA 2版

    EntityManager是JPA提供的用于管理实体生命周期和执行查询的主要接口。这一章节将详细探讨如何使用EntityManager进行实体的持久化操作。 3. 查询的使用和查询语言 第七章“Using Queries”和第八章“Query ...

    JPA讲解视频

    10. **事件监听器(Event Listeners)**:JPA允许注册监听器来在特定的生命周期事件(如插入、更新或删除)上执行操作。 **使用Hibernate作为JPA实现的优势:** 1. **性能优化**:Hibernate提供了缓存机制,如一级...

Global site tag (gtag.js) - Google Analytics