Spring数据JPA,复杂的原生Query

时间:2016-01-13 06:01:04

标签: jdbc spring-boot spring-data-jpa

我使用spring boot和spring数据JPA。它工作正常但是! 我需要使用来自Oracle数据库的复杂本机查询(来自SAP ERP的源数据)。

让我们说查询包含5个joned表(一个键或复合键)。 我可以使用很多参数。

解决方案:

1)由于耗时,使用JPA为此查询编写新查询是不真实的。创建表之间的所有关键关系似乎很复杂。

2)要运行这些查询,我使用JDBC。这很容易,因为我准备了原生查询。但我确信这种方法不对。

您是否知道如何使用Spring数据JPA来运行非常复杂的本机查询?

感谢您的建议

1 个答案:

答案 0 :(得分:0)

我的第一印象是您可能想要重新访问数据模型。在数据库资源上加入5个表可能非常昂贵,而您的数据模型可能更有用de-normalized

如果数据模型被埋没在石头中并且您不想将JPQL用于复杂查询并且不想使用普通JDBC,我相信您有两种选择。

  1. 使用JPA criteria queries。它们与Hibernate Criteria API略有相似,实际上它们意味着要取代它们。我只使用基于JEE6的JPA Criteria查询,有时他们觉得有点笨拙。不确定它是否在JEE7中变得更好。

  2. 您可以考虑使用较低级别的查询构建器,例如JOOQQueryDSL。我相信JOOQ是为Oracle支付的。 QueryDSL也对JPA有一些支持,但不确定目标是什么。也许让JPA标准查询稍微更有用的API。

  3. 这两个选项都允许使用Java链式API构造类型安全查询,因此您在Java代码中的查询不应该是比纯SQL更多的代码。