Spring Data JPA 2.3.9 版本EntityManager
在 Spring Data JPA 2.3.9 版本下,处理唯一索引的更新问题,关键在于理解JPA的实体状态管理机制。下面围绕你的要求,逐一拆解核心概念和实战策略。
🧬 1. 实体与状态:操作的基础
JPA中的实体有四种状态,这决定了save()到底执行INSERT还是UPDATE。
| 状态 | 与 EntityManager 的关联 | 主键 id | 关键行为 |
|---|---|---|---|
| 瞬时态 (Transient) | 未关联 | null 或未设置 | save() 会执行 INSERT |
| 托管态 (Managed) | 已关联 | 有值,且在数据库中存在 | 任何修改会在事务提交时自动同步到数据库,无需手动调用 save() |
