将 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的问题

[Hibernate开发之路]基础配置

Django 1.10 中文文档------3.3.8 会话sessions

Hibernate:如何从 ScrollableResults 中检索我的实体?

接口-Fiddler-​功能介绍

localhost xampp 与 codeigniter 的连接使用 mssql 数据库错误作为无效的对象名称'ci_sessions'