Hibernate Spring Boot JPA和JDBC能否共享相同的数据源/连接?

Hibernate Spring Boot JPA和JDBC能否共享相同的数据源/连接?,hibernate,jpa,spring-boot,jdbc,datasource,Hibernate,Jpa,Spring Boot,Jdbc,Datasource,这里是弹簧靴。我目前使用JPA/Hibernate和crudepository接口来处理我所有的JPA实体,到目前为止,它对我来说非常有用。我需要执行一个复杂的查询,该查询需要一个联合,从我所知道的,Hibernate不支持联合(或者至少不容易支持联合)。我在我的crudepository中尝试了十几个不同的JPQL查询,结果都失败了,因为Hibernate(JPA提供者)不喜欢UNION 因此,在这种情况下,我完全可以使用原始JDBC查询,并从结果集ResultSet到实体实例进行自己的准OR

这里是弹簧靴。我目前使用JPA/Hibernate和
crudepository
接口来处理我所有的JPA实体,到目前为止,它对我来说非常有用。我需要执行一个复杂的查询,该查询需要一个
联合
,从我所知道的,Hibernate不支持联合(或者至少不容易支持联合)。我在我的
crudepository
中尝试了十几个不同的JPQL查询,结果都失败了,因为Hibernate(JPA提供者)不喜欢
UNION

因此,在这种情况下,我完全可以使用原始JDBC查询,并从结果集
ResultSet
到实体实例进行自己的准OR映射

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

  • 我是否需要两个
    DataSource
    s,一个用于JPA/Hibernate,另一个用于我的JDBC(毕竟两者都连接到完全相同的数据库)
  • 通过维护这两个
    DataSource
    实例,我是否会遇到性能或网络/套接字问题? 我有什么特别需要做的吗
  • 目前,我不相信我的JPA/Hibernate配置使用连接池,但理想情况下,我希望使用JPA/Hibernate以及原始JDBC查询的连接池
  • 有没有办法使我的
    crudepository
    实例(JPA/Hibernate)和我的原始JDBC连接使用相同的
    数据源
    /config?如果是这样,这个配置/代码会是什么样子

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

休眠/SQL

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

例如:

List<Object[]> persons = entityManager.createNativeQuery("SELECT * FROM Person" ).getResultList();
List persons=entityManager.createNativeQuery(“从Person中选择*).getResultList();
HikariCP

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

否则请阅读本文:


您也可以使用JPA执行SQL查询。EntityManager.createNativeQuery。不需要使用JDBC。好的,谢谢@Simon…但是通过JPA会得到Hibernate作为提供者,Hibernate不喜欢我的联盟。不!Hibernate将按原样执行SQL语句。啊,很有趣。感谢@SimonMartinelli(+1代表所有3位)。快速提问:我仔细阅读了这篇文章,似乎我只需要访问
entityManager
实例。然而,到目前为止,我一直在使用
crudepositories
从所有这些抽象出来。据我所知,听起来我可以使用
@Autowired
@PersistenceContext(unitName=“mytable”)
注入到我的代码中?这在实践中会是什么样子?谢谢谢谢@Simon(+1)-这太棒了!快速提问,如何访问正确的
entityManager
管理所需的表/实体?再次感谢!请在这里找到更多信息:您可以在您的类中注入EntityManager
List<Object[]> persons = entityManager.createNativeQuery("SELECT * FROM Person" ).getResultList();