【问题标题】:Whats the right way to separate model and logic [closed]分离模型和逻辑的正确方法是什么[关闭]
【发布时间】:2017-06-25 20:15:21
【问题描述】:

您好,我正在建立一个新项目,并且正在努力使用 Java 注释。 它们与逻辑/API或模型有关

详细说明:

我已经启动了一个多 maven 模块,例如:

  • 项目父级
  • 项目模型
  • 项目持续
  • 项目逻辑1

我使用 JPA 将模型与其他所有简单的 POJO 模块分开。 将它们与不同的前端或 REST 等一起使用。 现在我想在模型中使用来自 project-logic1 的注释。

现在我对分离感到困惑。

  • 我是否应该为此和类似的注释/接口创建自己的 API 模块 (project-API)
  • 我是否应该在 project-model 中简单地添加注释
  • 我是否应该将 project-logic1 的依赖添加到 project-model POM

我认为第一个是正确的,但我不确定。

【问题讨论】:

  • 见仁见智
  • 没有“正确”的方法!有许多不同的方法,各有优缺点,完全受制于确切的上下文
  • 我想这取决于感觉如何最舒服。
  • 你的问题对于堆栈溢出来说太宽泛了......
  • 对不起~我虽然很简单,也许问题应该是“注释模型还是逻辑”之类的......有时我应该等着和我的橡皮鸭谈谈,然后再在 Stackoverflow 上发布内容〜现在我仍在为项目的彻底分离而苦苦挣扎。让人们发疯~

标签: java maven jpa annotations


【解决方案1】:

如果您有通用代码,我建议将其包装到专用模块中,因此我同意您的“API”-Approach(尽管此处的标签“API”可能太多了)。 不要交叉引用您的模块,依赖项必须始终采用一种方式。并且:永远不要重复自己,所以 c/p-ing 你的注释是根本错误的;)

【讨论】:

  • 我永远不会复制和粘贴东西或重复自己。因此,我在问注释和 co 应该放在哪里。
  • 一些通用模块“common-”可能是一个不错的选择
【解决方案2】:

据我了解,您不应在项目中将模型对象(带有 JPA 注释)用作 DTO。
您应该在逻辑项目中拥有您的模型,因此与数据库相关的项目不在同一个地方,并且您创建的 API 项目仅使用 POJO,与您的数据库无关,因此您可以将此 API 用于 REST 服务的答案并保留您的实现隐藏。

【讨论】:

  • 我不确定问题是否与“JPA 注释”有关,而是与 project-logic1 中定义的自定义注释有关
  • 但是当我使用 DB 相关项看起来几乎像 API POJO 对象时,我有重复的代码:S
  • 是的,没错,但是当涉及到 API 时,您无法真正避免这种情况,因为您的重复代码是样板代码(getter 和 setter)。不过,这样做有助于使您的代码更易于维护。避免重复代码是好的,但有时,要添加抽象并将对象打开到外部,您可能需要复制一些代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-19
  • 2021-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-15
  • 1970-01-01
相关资源
最近更新 更多