Hibernate Spring Boot JPA和JDBC能否共享相同的数据源/连接?
这里是弹簧靴。我目前使用JPA/Hibernate和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
crudepository
接口来处理我所有的JPA实体,到目前为止,它对我来说非常有用。我需要执行一个复杂的查询,该查询需要一个联合
,从我所知道的,Hibernate不支持联合(或者至少不容易支持联合)。我在我的crudepository
中尝试了十几个不同的JPQL查询,结果都失败了,因为Hibernate(JPA提供者)不喜欢UNION
因此,在这种情况下,我完全可以使用原始JDBC查询,并从结果集ResultSet
到实体实例进行自己的准OR映射
我关心的是如何管理JDBC连接。我在应用程序配置(YAML)文件中配置JPA/Hibernate连接配置:
- 我是否需要两个
s,一个用于JPA/Hibernate,另一个用于我的JDBC(毕竟两者都连接到完全相同的数据库)DataSource
- 通过维护这两个
实例,我是否会遇到性能或网络/套接字问题? 我有什么特别需要做的吗DataSource
- 目前,我不相信我的JPA/Hibernate配置使用连接池,但理想情况下,我希望使用JPA/Hibernate以及原始JDBC查询的连接池
- 有没有办法使我的
实例(JPA/Hibernate)和我的原始JDBC连接使用相同的crudepository
/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();