viv*_*mar 4 spring hibernate spring-data-jpa
spring数据save和hibernate有save什么区别?它们的工作方式相同吗?
如果您确切了解 JPA、Hibernate 和 Spring Data JPA 之间的关系,您就会更好地理解这一点。
JPA(Java Persistence API)是在Java中进行ORM(对象关系映射)的标准接口规范。请注意,它本身并不实现接口。您需要一个实现 JPA 规范的库才能在您的软件中使用它。
Hibernate 是 JPA 的一个实现——它是一个实现 JPA 规范的库。
Spring Data JPA 是 Spring Framework 的一个子项目,它可以更轻松地使用 JPA 并将其集成到 Spring Framework 的其余部分中。
如果你使用Spring Data JPA,你的项目中还需要有JPA的实现,比如Hibernate。
您使用 Spring Data JPA 提供的接口和类,它与底层 JPA 实现 (Hibernate) 对话以实际与数据库对话。
通过Spring Data JPA保存实体最终会调用Hibernate来保存实体,所以最终效果是一样的。
但是:如果您使用的是 Spring Data JPA,则不应直接使用 Hibernate。事实上,您根本不应该在自己的代码中直接引用 Hibernate。通过在代码中直接使用 Hibernate,您将完全绕过 Spring Data JPA。
HibernateSession.save()是 JPA 中不存在的专有 Hibernate 操作。它基本上和 做同样的事情EntityManager.persist(),除了它保证生成 ID 并返回它。但是没有应用相同的级联,因为 Hibernate 有一个专有的 SAVE 级联选项,这当然存在于 JPA 中。
Spring-data-jpa 的 SimpleJpaRepository 的保存操作要么调用EntityManager.persist(),如果实体被认为是新的,要么调用,如果EntityManager.merge()实体不被认为是新的。
所以不,它们不是一回事,工作方式也不同。
| 归档时间: |
|
| 查看次数: |
1400 次 |
| 最近记录: |