我对JPA2.0/ORM的体系结构有一个问题,在我们的生产系统中(我相信在很多系统中),我们需要动态更改SQL查询的能力,因为缓慢的查询和只在生产中暴露的查询中的错误(重负载和重数据),导致我们在存储过程中使用并从iBatis调用它们。
根据我所看到的模式,最佳实践是将DB层和应用程序层分开,这样我就可以告诉我的DBA在生产环境中修复有buggy的存储过程/索引表,而无需部署新的应用程序(分配整个系统的部署时间)。
在ORM/JPA 2.0中,代码中定义的命名查询导致程序员在开发/QA过程中捕获整个数据库问题-非常糟糕!
我在API中看到,框架提供了定义原生查询的选项-但在书籍/教程中,最佳实践是使用命名查询……
在我阅读了Hibernate/JPA 2.0规范以了解是否有解决此问题的方案后,我了解到没有解决方案...?
在我看来,我需要在应用程序代码层中定义硬编码的查询……另外,在XML描述符中定义查询,并通过热部署的补丁解决方案加载XML -非常糟糕,而且不是标准的!
您是否有设计模式/解决方案
谢谢大家!
Uri。
发布于 2010-09-08 17:34:46
我建议您在部署之前进行单元和性能测试。你不应该在这么晚的时候发现out或慢查询。
正如你所发现的,JPA/ORM不像iBatis。
"Buggy“听起来像是缺乏彻底的单元测试。
“慢”听起来像是您的DBA没有检查JPA生成的SQL。解释所有这些的计划。您可能会在数据库端遇到任何使用JPA都无法修复的索引或模式问题。
模式不是解决方案。
发布于 2010-09-14 06:26:22
您应该能够让您的实体从视图和表中读取数据。然后,可以动态地修改视图的sql。
https://stackoverflow.com/questions/3666316
复制相似问题