结合使用Hibernate Sessions功能和Spring Data JPA

时间:2018-10-02 14:51:23

标签: java spring hibernate jpa spring-data-jpa

我知道Spring Data JPA使用Hibernate,但是,我有一些问题需要澄清。

  • 如果我使用Spring Data JPA,是否可以使用其他Hibernate功能,例如C3P0,Hibernate二级缓存或Hibernate会话?

  • 与使用休眠会话和HQL相比,使用@Query编写自定义查询有什么优势?

  • 使用Spring Data JpaRepository查询方法和使用Hibernate HQL之间是否有性能差异?

我在这里看到了其他类似的问题,但他们没有回答这些问题。

1 个答案:

答案 0 :(得分:1)

  

我知道Spring Data JPA使用Hibernate

不。它使用JPA。即使Hibernate是Spring Boot的默认JPA实现和最受欢迎的JPA实现,也可以使用任何JPA引擎。

  

我将能够使用其他Hibernate功能,例如C3P0

C3P0与Hibernate无关。这是一个连接池。您可以在Spring和Hibernate中使用任何连接池。 Spring Boot默认使用HikariCP,我会坚持使用(这是一个非常好的池)。

  

休眠二级缓存

是的。

  

还是Hibernate会话(如果我使用Spring Data JPA)?

确实没有充分的理由使用旧的专有Hibernate Session API,而不使用标准的JPA API。如果您确实需要,我不知道为什么您不能使用它,但我不会(也永远不需要)。

  

与使用休眠会话和HQL相比,使用@Query编写自定义查询有什么优势?

查询采用HQL(准确地说是JPQL)查询。如果使用查询,则使用HQL。好处是您只需要声明查询。 Spring可以为您完成参数的绑定,查询的执行,分页等工作。但是您可以使用自定义存储库实现,并在需要时使用本机JPA API。

  

使用Spring Data JpaRepository查询方法和使用Hibernate HQL之间是否有性能差异?

不。