数据映射器应该引用域模型吗?

发布于 2024-10-11 21:28:23 字数 840 浏览 4 评论 0原文

嘿伙计们。 我正在读马丁·福勒的《PoEA》。数据映射器模式以这种方式处理域对象:

class AbstractMapper... 

   protected DomainObject load(ResultSet rs) throws SQLException {
      Long id = new Long(rs.getLong(1));
      if (loadedMap.containsKey(id)) return (DomainObject) loadedMap.get(id);
      DomainObject result = doLoad(id, rs);
      loadedMap.put(id, result);
      return result;
   }
   abstract protected DomainObject doLoad(Long id, ResultSet rs) throws SQLException;

class PersonMapper...

   protected DomainObject doLoad(Long id, ResultSet rs) throws SQLException {
      String lastNameArg = rs.getString(2);
      String firstNameArg = rs.getString(3);
      int numDependentsArg = rs.getInt(4);
      return new Person(id, lastNameArg, firstNameArg, numDependentsArg);
   }

这意味着作为 DAL 的数据映射器引用域。我想DAL一定不会有这样的引用。你怎么认为?

Hey guys.
I'm reading Martin Fowler's PoEA. Data Mapper pattern is working with Domain objects in this way:

class AbstractMapper... 

   protected DomainObject load(ResultSet rs) throws SQLException {
      Long id = new Long(rs.getLong(1));
      if (loadedMap.containsKey(id)) return (DomainObject) loadedMap.get(id);
      DomainObject result = doLoad(id, rs);
      loadedMap.put(id, result);
      return result;
   }
   abstract protected DomainObject doLoad(Long id, ResultSet rs) throws SQLException;

class PersonMapper...

   protected DomainObject doLoad(Long id, ResultSet rs) throws SQLException {
      String lastNameArg = rs.getString(2);
      String firstNameArg = rs.getString(3);
      int numDependentsArg = rs.getInt(4);
      return new Person(id, lastNameArg, firstNameArg, numDependentsArg);
   }

It means that Data Mapper that is DAL references Domain. I thought that DAL must not have such references. What do you think?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

丘比特射中我 2024-10-18 21:28:23

任何层,包括表示层或数据访问层,都可以引用域模型。但是,域模型不应引用这些层,因此它可以被重用以支持替代接口和持久性策略。

Any layer, including a presentation layer or a data access layer, can reference the domain model. However, the domain model should not reference those layers so it can potentially be re-used to support alternative interfaces and persistence strategies.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文