java - 寻求建议: overview/detail representation of models

标签 java architecture modeling 3-tier

我有一个困扰我很长一段时间的问题,我也想出了一个解决方案,这里的问题是如何最好地实现它,所以如果您以前处理过这种情况,我正在寻求您的建议(很难在网络上找到任何关于这个主题的有用信息)。

情况

3 层架构(富客户端,例如 Swing 或 Eclipse RCP 或 Android、具有服务层实现的 Web 应用程序、关系数据库)。 我的模型是POJO(普通的旧式 Java 对象、具有 getter 和 setter 的纯数据容器),它们是持久的(我所有模型上的技术 ID)。

我经常处理聚合使用的大型模型,但需要有效地读取和传输。假设我有以下模型:

  • 用户,包含登录名、密码哈希、盐、名字/姓氏、电子邮件地址、授权凭据、个人资料图片(图片)
  • 图像,包含名称、内容类型和(通常很大)数据
  • 文章,包含文本和作者(用户)

问题

现在,当我列出或加载一篇文章时,我不想加载整个作者(用户),因为它暴露了太多的详细信息(密码哈希和盐),并携带了太多我在文章上下文中实际需要的数据(名字/姓氏和电子邮件)(名字/姓氏和电子邮件)。

一般来说:有时我需要模型的完整详细信息(在创建/编辑模型时,或在非常具体的情况下),但是当我在其他模型中聚合使用它们时,我宁愿使用简化的表单(如果我需要详细信息,我可以通过单独的请求加载它们)。

解决方案

对于每个模型,我可以创建两个变体:一个具有完整 CRUD(创建、读取、更新、删除)的完整细节变体和一个简化只读变体,可以用作聚合关系中的代理。简化模型版本还包含详细版本的技术 ID,因此我可以根据需要获取它。

  • 对于用户:简化模型仅包含名字/姓氏和电子邮件地址。
  • 对于图像:简化模型没有图像数据。
  • 文章作者是用户的简化版,用户的个人资料图片是图像的简化版。

问题

  • 这是现有模式吗?它与 DTO(数据传输对象)有些关系,但并不相同。有人见过这个吗?
  • 您以前使用过类似的东西吗?关于两种表示形式之间的命名、面向对象关系的任何建议或提示吗?

最佳答案

我无法将您的解决方案选项与我所知道的模式关联起来。但是稍后可以通过在您的服务之上引入一个非常薄的 API (Web API) 来满足您的要求。

它有两个部分,

总而言之,这为您提供了一个非常灵活的 API,并且在您的 API 下具有非常干净的域模型。如今,这是一种被广泛接受的方法。

希望有帮助。

关于java - 寻求建议: overview/detail representation of models,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24591502/

相关文章:

c# - 平台独立性: How is it different from moving source code from one OS to another?

java - 无法从另一个类访问数据

java - 使用 Java 将文档上传到共享点的 API

Swift MVVM - 使用协议(protocol)来处理 viewModel 事件

python - 在 Python 的 GEKKO 中实现宏观经济模型

android - 用于android java开发的Eclipse建模工具

Java iOS MDM : Get device which has removed the mdm payload or was erased to factory

database - 什么时候适合将 UUID 用于 Web 项目?

architecture - 除了中断驱动架构还有其他模型吗?

data-structures - 数据结构 3D 建模