gpt4 book ai didi

hibernate - Spring Boot JPA 和 JDBC 可以共享相同的数据源/连接吗?

转载 作者:行者123 更新时间:2023-12-04 17:45:58 29 4
gpt4 key购买 nike

此处为 Spring Boot。我目前将 JPA/Hibernate 与 CrudRepository 接口(interface)一起用于我所有的 JPA 实体,到目前为止它对我来说效果很好。我需要执行一个需要 UNION 的复杂查询,据我所知,Hibernate 不支持联合(或者至少不支持联合)。我已经通过在我的 CrudRepository 中尝试大约 十几个 不同的 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
  • 我是否需要两个 DataSource,一个用于 JPA/Hibernate,另一个用于我的 JDBC(毕竟两者都连接到完全相同的数据库)
  • 维护这两个 DataSource 实例是否会出现性能或网络/套接字问题?我需要做的任何特别的事情
  • 目前我相信我的 JPA/Hibernate 配置使用连接池,但理想情况下我想使用 HikariCP用于 JPA/Hibernate 以及我的原始 JDBC 查询的池化
  • 有没有办法让我的 CrudRepository 实例(JPA/Hibernate)和我的原始 JDBC 连接使用完全相同的 DataSource/config?如果是这样,这个配置/代码会是什么样子?

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

最佳答案

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

关于hibernate - Spring Boot JPA 和 JDBC 可以共享相同的数据源/连接吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48584863/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com