将 Hibernate Sessions 功能与 Spring Data JPA 一起使用
Posted
技术标签:
【中文标题】将 Hibernate Sessions 功能与 Spring Data JPA 一起使用【英文标题】:Using Hibernate Sessions features along with 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 有性能差异吗?
我在这里看到了其他类似的问题,他们没有回答这些问题。
【问题讨论】:
【参考方案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 有性能差异吗?
没有。
【讨论】:
以上是关于将 Hibernate Sessions 功能与 Spring Data JPA 一起使用的主要内容,如果未能解决你的问题,请参考以下文章
关于hibernate的AnnotationConfiguration的问题
Django 1.10 中文文档------3.3.8 会话sessions
Hibernate:如何从 ScrollableResults 中检索我的实体?
localhost xampp 与 codeigniter 的连接使用 mssql 数据库错误作为无效的对象名称'ci_sessions'