Spring Boot here。我目前使用JPA / Hibernate和CrudRepository
接口来处理我的所有JPA实体,到目前为止它一直很适合我。我需要执行一个需要UNION
的复杂查询,据我所知,Hibernate不支持联合(或者至少不支持它们)。我通过在CrudRepository
中尝试了一些打开不同的JPQL查询进行了验证,但由于Hibernate(JPA提供商)不喜欢{{1} }}
所以,我完全没有在这种情况下使用原始JDBC查询并从结果UNION
执行我自己的准OR映射回到我的实体的实例。
我关心的是与管理JDBC连接有关。我在应用程序配置(YAML)文件中配置我的JPA / Hibernate连接配置:
ResultSet
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
,一个用于JPA / Hibernate,另一个用于我的JDBC(两者都连接到完全相同的数据库)DataSource
实例,我是否会遇到性能或网络/套接字问题?
我需要做的任何特别的事情DataSource
实例(JPA / Hibernate)和我的原始JDBC连接使用完全相同的CrudRepository
/ config?如果是这样,这个配置/代码会是什么样的?我知道这里有几个问题,但我相信正确的战斗疲惫的JDBC / JPA老手将能够通过快速的配置和/或代码片段解决所有这些问题!提前谢谢!
答案 0 :(得分:1)
<强>休眠/ 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