gpt4 book ai didi

java - 如何在生产中动态更改 JPA 2.0 SQL/JPQL 查询

转载 作者:行者123 更新时间:2023-12-01 19:22:05 25 4
gpt4 key购买 nike

我对 JPA 2.0/ORM 的架构有疑问,在我们的生产系统中(我相信在很多系统中),我们需要动态更改 SQL 查询的能力,因为查询速度慢,并且查询中的错误仅在生产中暴露(重负载和大量数据),因此,我们在存储过程中使用并从 iBatis 调用它们。

正如我所看到的模式,最佳实践是将数据库层和应用程序层分开,这样我就可以告诉我的 DBA 在生产中修复有缺陷的存储过程/索引表,而无需部署新的应用程序(分布式系统 - 长时间)部署)。

在 ORM/JPA 2.0 中,代码中定义了命名查询,这导致程序员在开发/QA 中捕获整个数据库问题 - 非常糟糕!

我在 API 中看到框架提供了定义 native 查询的选项 - 但在书籍/教程中,最佳实践是使用命名查询...

在我阅读了 Hibernate/JPA 2.0 SPEC 以查看是否有解决此问题的方法之后,我知道没有解决办法...?

在我看来,我需要在应用程序代码层中定义硬编码的查询......还可以在 XML 描述符中定义查询并通过热部署的补丁解决方案加载 XML - 非常糟糕并且不符合标准!

您有设计模式/解决方案吗

谢谢大家!!!

乌里。

最佳答案

我建议您在部署之前进行单元和性能测试。您不应该在最后时刻发现有错误或缓慢的查询。

正如您所发现的,JPA/ORM 与 iBatis 不同。

“Buggy”听起来像是缺乏彻底的单元测试。

“慢”听起来好像您的 DBA 没有检查 JPA 生成的 SQL。解释所有这一切的计划。您可能在数据库端遇到索引或架构问题,无论使用多少 JPA 都无法解决这些问题。

模式不是解决方案。

关于java - 如何在生产中动态更改 JPA 2.0 SQL/JPQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3666316/

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