代码之家  ›  专栏  ›  技术社区  ›  Muizz Mahdy

使用Hibernate会话功能以及Spring数据JPA

  •  0
  • Muizz Mahdy  · 技术社区  · 6 年前

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

    • 如果我使用SpringDataJPA,我是否可以使用其他休眠功能,如c3p0、休眠二级缓存或休眠会话?

    • 与使用Hibernate会话和HQL相比,使用@query编写自定义查询有什么好处?

    • 使用Spring数据jparepository查询方法和使用Hibernate HQL有什么性能差异吗?

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

    1 回复  |  直到 6 年前
        1
  •  1
  •   JB Nizet    6 年前

    我知道JPA使用的Spring数据是Hibernate

    不,它使用JPA。尽管Hibernate是Spring引导的默认JPA实现,也是最流行的JPA实现,但是可以使用任何JPA引擎。

    我能使用其他休眠功能吗,如c3p0

    c3p0与休眠无关。这是一个连接池。您可以在Spring和Hibernate中使用您所需要的任何连接池。SpringBoot默认使用hikaricp,我会坚持这个原则(这是一个非常好的池)。

    休眠二级缓存

    对。

    或者休眠会话,如果我使用Spring数据JPA?

    使用旧的、专有的Hibernate会话API,而不是使用标准的JPA API,真的没有什么好的理由。如果你真的需要的话,我不明白为什么你不能用它,但我不会(也从来没有必要)。

    与使用Hibernate会话和HQL相比,使用@query编写自定义查询有什么好处?

    查询采用HQL(确切地说,是JPQL)查询。如果使用query,则使用hql。优点是您只需要声明查询。参数的绑定、查询的执行、分页等都是由Spring为您完成的。但如果需要,您可以使用自定义存储库实现和本机JPA API。

    使用Spring数据jparepository查询方法和使用Hibernate HQL有什么性能差异吗?

    不。