首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用数据映射器模式用java结果集创建领域模型?

如何使用数据映射器模式用java结果集创建领域模型?
EN

Stack Overflow用户
提问于 2014-02-14 19:43:39
回答 1查看 709关注 0票数 2

我想知道如何在数据映射器中给定Java的ResultSet对象来创建域模型。我阅读了Martin Fowler的书,在他的示例中,他将每个字段从ResultSet加载到数据映射器的方法中的局部变量中,该方法创建域模型,然后将所有这些局部变量逐个传递给域模型的构造函数。

问题是它只有在表包含2-5列的情况下才有效,否则你最终会得到10+局部变量和一个接受10+参数的构造函数。我不喜欢接受超过5个参数的构造函数或方法,10+太多了。不提我的域模型的构造函数也有来自依赖注入的参数,比如UnitOfWork。总之,我不想弄乱构造函数的签名。

我有两种可能的解决方案,但似乎都有问题。我绝对可以将整个ResultSet传递给域模型的构造函数,这样构造函数就只有2-3个参数。与此相关的还有一个问题,域模型和域层现在知道ResultSet的存在。据我所知,数据映射器应该作为域模型和结果集之间的中介。如果域模型直接操作结果集,这是一个糟糕的架构设计。从长远来看,它会带来更多的问题。

我还可以首先创建一个空域模型,然后使用它的setter方法向它的字段添加值。这种方法的问题是,我有一个UnitOfWork来监控域模型的状态,如新的、脏的、已删除的或干净的。UnitOfWork的机制是,每当调用域模型的setter方法时,它都会将对象标记为脏的并等待DB更新。因此,使用空域模型+ setter方法会导致每次调用setter时对象都被标记为脏。尽管我可以在返回域模型之前将其标记为clean,但是当我加载一个对象集合时,整个过程仍然很慢。

你怎么看?在给定既优雅又不消耗资源的Java ResultSet的情况下,有没有其他方法可以创建域模型?我没主意了.

EN

回答 1

Stack Overflow用户

发布于 2014-08-21 22:43:05

您可以考虑使用Builder patternResultSet构建模型。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21778489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档