【问题标题】:Using Hibernate Sessions features along with Spring Data JPA将 Hibernate Sessions 功能与 Spring Data JPA 一起使用
【发布时间】:2019-03-07 17:35:20
【问题描述】:
我知道 Spring Data JPA 使用 Hibernate,但是,我有一些问题需要澄清。
如果我使用 Spring Data JPA,我能否使用其他 Hibernate 功能,例如 C3P0、Hibernate 二级缓存或 Hibernate 会话?
与使用休眠会话和 HQL 相比,使用 @Query 编写自定义查询有哪些优势?
使用 Spring Data JpaRepository 查询方法和使用 Hibernate HQL 有性能差异吗?
我在这里看到了其他类似的问题,他们没有回答这些问题。
【问题讨论】:
标签:
java
spring
hibernate
jpa
spring-data-jpa
【解决方案1】:
我知道 Spring Data JPA 使用 Hibernate
没有。它使用 JPA。尽管 Hibernate 是 Spring Boot 的默认 JPA 实现,也是最流行的 JPA 实现,但任何 JPA 引擎都可以使用。
我能否使用其他 Hibernate 功能,例如 C3P0
C3P0 与 Hibernate 无关。这是一个连接池。您可以在 Spring 和 Hibernate 中使用任何您想要的连接池。 Spring Boot 默认使用 HikariCP,我会坚持使用(这是一个非常好的池)。
休眠二级缓存
是的。
如果我使用 Spring Data JPA,还是 Hibernate 会话?
确实没有充分的理由使用旧的专有 Hibernate Session API,而不是使用标准的 JPA API。如果你真的需要,我不明白你为什么不能使用它,但我不会(而且从来没有必要)。
与使用休眠会话和 HQL 相比,使用 @Query 编写自定义查询有哪些优势?
Query 采用 HQL(准确地说是 JPQL)查询。如果使用 Query,则使用 HQL。优点是您只需要声明查询。参数的绑定、查询的执行、分页等都是由Spring为你完成的。但如果需要,您可以使用自定义存储库实现并使用本机 JPA API。
使用 Spring Data JpaRepository 查询方法和使用 Hibernate HQL 有性能差异吗?
没有。