Sql 对使用联接创建的域对象进行更新

Sql 对使用联接创建的域对象进行更新,sql,orm,jakarta-ee,domain-driven-design,Sql,Orm,Jakarta Ee,Domain Driven Design,这种情况通常是如何处理的?我有一个域对象,其中包含的数据是两个表之间连接的结果;应该如何处理更新 一种方法是使用TableADao、TableBDao(1to1tabledao关系),并使用一个存储库类构造域对象,该存储库类可以有效地处理这种关系(连接和批处理更新) 有更好的办法吗?使用连接似乎更有效。这两个表非常小,但它们是我必须支持且无法更改的遗留数据库的一部分 ORM如何处理这种情况?创建一个视图,您可以像更新一个表一样更新它。这取决于您使用的ORM。它可能支持也可能不支持聚合对象和/或映

这种情况通常是如何处理的?我有一个域对象,其中包含的数据是两个表之间连接的结果;应该如何处理更新

一种方法是使用TableADao、TableBDao(1to1tabledao关系),并使用一个存储库类构造域对象,该存储库类可以有效地处理这种关系(连接和批处理更新)

有更好的办法吗?使用连接似乎更有效。这两个表非常小,但它们是我必须支持且无法更改的遗留数据库的一部分


ORM如何处理这种情况?

创建一个视图,您可以像更新一个表一样更新它。

这取决于您使用的ORM。它可能支持也可能不支持聚合对象和/或映射视图。

不幸的是(或者可能不支持,因为我一直在读ORM是如何不酷的,至少从DBA的角度来看是这样的),我不能使用真正的ORM,因为数据库设计很差。具体来说,一旦部署,它必须能够处理对数据库模式的更改,这对于静态db->domain映射来说不是个好兆头。现在我正在使用ApacheDbutils和一个自定义解析器,该解析器将一些已知的col映射到bean属性,在映射中抛出其他所有内容,并依赖安全访问器方法来防止NPE。每当db模式发生更改时,它都不应该导致现有代码中的破坏性更改,对吗。。。?如果添加了表,ORMs就可以处理这个问题。如果字段被添加或重命名,ORMs也可以处理这个问题。基本上,任何更改都可以通过使用视图来处理或覆盖。但事实仍然是,维护糟糕的遗留应用程序很糟糕:-/这肯定会解决我的问题,但我想知道,在没有数据库修改要求的情况下,这将如何工作。我可以用一种一次性的方式来实现这一点吗,例如,Dao在实例化时创建视图,然后在销毁视图时将其删除?这个数据库实现是特定的吗?现在我只支持oracle 10/11g,但最终将支持MSSQL和MySql,希望我们能够接近完全独立于数据库实现。我不确定,您可能想在dba.stackexchange.com上询问