我知道Spring Data JPA使用Hibernate,但是,我有一些问题需要澄清。
如果我使用Spring Data JPA,是否可以使用其他Hibernate功能,例如C3P0,Hibernate二级缓存或Hibernate会话?
与使用休眠会话和HQL相比,使用@Query编写自定义查询有什么优势?
使用Spring Data JpaRepository查询方法和使用Hibernate HQL之间是否有性能差异?
我在这里看到了其他类似的问题,但他们没有回答这些问题。
答案 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之间是否有性能差异?
不。