Spring Boot JPA 和 JDBC 可以共享相同的 DataSource/connections 吗?

Can Spring Boot JPA and JDBC share same DataSource/connections?

Spring 在这里开机。我目前对所有 JPA 实体使用 JPA/Hibernate 和 CrudRepository 接口,到目前为止它对我来说效果很好。我需要执行一个需要 UNION 的复杂查询,据我所知,Hibernate 不支持联合(或者至少不支持联合)。我已经通过在我的 CrudRepository 中尝试 dozen 个不同的 JPQL 查询进行了验证,但所有查询都失败了,因为 Hibernate(JPA 提供程序)不喜欢 UNION.

因此,在这种情况下,我完全可以只使用原始 JDBC 查询,并从结果 ResultSet 中执行我自己的准或映射返回到我的实体实例。

我所关心的与管理 JDBC 连接有关。我在应用程序配置 (YAML) 文件中配置 JPA/Hibernate 连接配置:

spring:
  cache:
    type: none
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/myapp_db?useSSL=false
    username: root
    testWhileIdle: true
    validationQuery: SELECT 1
  jpa:
    show-sql: false
    hibernate:
      ddl-auto: none
      naming:
        physical-strategy: org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy
        implicit-strategy: org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy
    properties:
      hibernate.dialect: org.hibernate.dialect.MySQL5InnoDBDialect
      hibernate.cache.use_second_level_cache: false
      hibernate.cache.use_query_cache: false
      hibernate.generate_statistics: false
      hibernate.hbm2ddl.auto: validate

我知道这里有几个问题,但我相信厌倦战斗的 JDBC/JPA 老手将能够通过快速配置 and/or 代码片段解决所有问题!提前致谢!

Hibernate/SQL

首先阅读如何使用 Hibernate 执行 SQL 的文档:

http://docs.jboss.org/hibernate/orm/5.2/userguide/html_single/Hibernate_User_Guide.html#sql

示例:

List<Object[]> persons = entityManager.createNativeQuery("SELECT * FROM Person" ).getResultList();

HikariCP

如果你可以使用Spring Boot 2因为HikariCP是默认的连接池。

否则阅读这篇文章:

http://therealdanvega.com/blog/2017/07/26/use-hikaricp-next-spring-boot-project