sam*_*ers 3 hibernate jpa spring-data-jpa spring-boot
当使用 spring-data-jpa 和 hibernate 作为 jpa 提供者时,对象/实体生命周期与直接使用 hibernate 或由 hibernate 定义(或者可能是 jpa 规范本身)时相同。
Hibernate 将这些生命周期定义为实体 - Transient, Persistent, Detached, Removed。使用 spring-data-jpa 时这些相同的生命周期也适用吗?如果是这样,下面 Hibernate 提供的方法如何与 spring jpa crud 存储库的方法进行映射。
//below methods in hibernate move an entity to persistent state
save(e),
persist(e);
update(e);
saveOrUpdate(e);
lock(e);
merge(e);
Run Code Online (Sandbox Code Playgroud)
和
//below methods in hibernate move an entity to detached state
detach(e);
evict(e);
Run Code Online (Sandbox Code Playgroud)
对于问题的第一部分:
Spring Data JPA 只是在 JPA 之上提供了一些舒适的机制。持久性、映射和生命周期仍然由 JPA 或其实现(即您的情况下的 Hibernate)管理。这意味着生命周期是相同的。
Spring Data JPA 方法和 Hibernates/JPA 方法之间的映射见下表。
| 春季数据 | 日本PA |
|---|---|
CrudRepository.save* |
对于新实体EntityManager.persist,EntityManager.merge否则 |
CrudRepository.delete* |
EntityManager.remove |
CrudRepository.findById |
EntityManager.find* |
JpaRepository.*flush |
EntityManager.flush |
JpaRepository.getById |
EntityManager.getReference |
在接口中预定义的其他查询方法或以其他方式使用各种类型的查询。
| 归档时间: |
|
| 查看次数: |
815 次 |
| 最近记录: |