我应该在哪一层将两个实体连接在一起?

2023-12-22

我使用 Spring MVC 和常规 JDBC。

我刚刚了解到我应该将业务流程分为表示层、控制器层、服务层和存储库/DAO 层。现在假设我有一个名为Person可以有多个Jobs. Job它本身是另一个实体,有自己的属性。据我所知,存储库层仅管理一个实体。现在我有一个实体包含另一个实体。我在哪里“加入”他们?服务层?

假设我想得到一个person whose job尚不清楚(延迟加载)。但系统可能会询问什么job那个特定的person是稍后的事。在这种情况下,每一层的作用是什么?

如果我需要在这个问题中添加任何细节,请告诉我。


从我从问题陈述中可以收集到的信息:-

  1. 人——可以在没有工作的情况下存在。可以有零个或多个作业。
  2. 工作 - 可以独立于执行该工作的人员而存在。

一种更简洁的方法是使用一个实体(及其表)来封装此映射:-

class Employment{
     private Person person;
     private Job job;
}

现在可以从两端查询。喜欢:-

  • 从 PERSON.ID=xyz 的就业中选择

这可能会给出 0 行或更多行。

每行也会有映射的Job的信息。

因此,在这种情况下,您的服务/存储库将类似于:-

interface EmployementRepository{

   //  CRUD methods on Employement.
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我应该在哪一层将两个实体连接在一起? 的相关文章

随机推荐

  • 如何获取 SharePoint 工作流中的参数

    我正在尝试创建一个带有输出参数的自定义工作流程操作以进行错误处理 根据各种示例 我无法让 Parameter Direction Out 工作 一切似乎都正确 但当我尝试将输出分配给 SharePoint Designer 中的 错误 变量
  • Windows:如何查询低级键盘挂钩中修饰键的状态?

    对于 USB 键盘配置工具 我需要拦截所有键盘输入并检测同时按下哪些修饰键和普通键 因此 我使用 Windows 低级挂钩 WH KEYBOARD LL 它工作正常 只是我无法确定 WIN 键 VK LWIN VK RWIN 是否被按下 c
  • 如何为未知长度的输入字符串分配内存?

    这是结构 typedef struct friend char firstname char lastname char birthdate 9 friend 我对如何让用户输入字符串并将其放置在friend结构为firstname or
  • SSIS 2012 未找到方法:无效

    最近 当我想打开 OLE DB 源组件时 我在每个 SSIS 包 使用 Visual Studio 2012 中都遇到此错误 Method not found Void Microsoft DataTransformationService
  • Mono / Ubuntu - 定义冲突

    我正在尝试在 Ubuntu 上构建一个库 Medsphere Widgets 但它抛出了一个错误 我已经进行了很好的搜索 但似乎没有人能找到答案 配置脚本工作正常 并且完成时没有警告或错误 当我去运行 make 时 它 会执行以下操作 po
  • 复制项目行为不一致?

    考虑这个目录结构 C temp A file txt C temp B 如果我运行命令 Copy Item C temp A C temp B A Recurse Force ErrorAction Stop I have C temp A
  • 如何在 Google Dialogflow Fullfilment 内联编辑器中安装 npm 包

    我想在我的聊天机器人中安装一些 npm 包 但我无法使其工作 package json 文件如下所示 name dialogflowFirebaseFulfillment description This is the default fu
  • 埃尔兰的哲学家餐厅

    如果您以前看过 哲学家就餐 那么您就会知道有几种方法可以做到这一点 我的实现创建了与消息传递进行通信的哲学家和分叉进程 我有很多关于分叉和哲学家进程格式的程序 但我自己弄清楚了 现在我将分享完成的代码 我是初学者仅供参考 祝你今天过得愉快
  • java构造函数有什么意义?

    所以我正在学习java 我已经一个月了 我刚刚了解了构造函数 但我不明白创建一个的全部目的 我为什么以及何时想要使用它 我的整体想法是它没有 main 方法 您可以从主类中调用构造函数 任何人都可以就这个话题启发我 这对我有很大帮助 构造函
  • PHP,通过POST传递数组

    这是通过以下方式发送数组的最安全的方式POST foreach id as array
  • 如何用斜杠“/”替换反斜杠“\”?

    在我的代码中我想替换反斜杠字符 通过正斜杠字符 在一个字符串中 我尝试过以下代码 string str chosen file Replace where chosen file is a string其中包含大量出现的 特点 但它似乎不起
  • 猕猴桃屏幕。我必须用 super 初始化吗?

    来自docs https kivy org docs api kivy uix screenmanager html Declare both screens class MenuScreen Screen pass class Setti
  • wsimport 不使用复杂的输入类型

    当我使用 wsimport 为某些服务生成代理时 每个端口的生成方法签名似乎没有使用 WSDL 中指定的复杂类型 但我注意到其他一些服务确实如此 多种服务都发生过这种情况 但最近的例子是亚马逊的 AWSEConsumerService 链接
  • 将 YUI3 与 HTTPS 结合使用的“正确”方法是什么?

    我对 YUI2 有丰富的经验 并且正在快速了解 YUI3 我正在编写的服务需要 HTTPS 但普通的 YUI 体验是从雅虎的 HTTP only CDN 加载的 当浏览器尝试将 HTTPS 页面与 HTTP javascript 混合时 它
  • 使用 javascript 设置响应头

    我在从应用程序中的 URL 收集 json 值时遇到问题 当我尝试获取它们时 控制台中会显示错误日志 指出 access control allow origin 不允许来源 我研究了一下 发现响应标头必须设置为 Access Contro
  • 在 iOS 5 中的地图上放置 CLPlacemark

    在 iOS 5 中 有一种转发地理编码地址的新方法 将 1 Infinite Loop CA USA 等地址转换为 lat lang 地址 有关此的更多信息请参见此处 http developer apple com library ios
  • 在 mac 中通过应用程序(.jar)读取/写入文件时出现权限被拒绝错误

    我在 swing 中创建了一个应用程序 还为同一应用程序创建了一个安装程序 安装程序和应用程序都可以在 Windows 系统上完美运行 但我的问题是 当我尝试在 mac os 中运行它时 它并不能完美地处理所有数据 我发现在我的应用程序中我
  • 在Hibernate的EmptyInterceptor中注入JPA的实体管理器

    我在数据访问层中使用 JPA 2 0 和 Hibernate 出于审计日志记录的目的 我通过在 persistence xml 中配置以下属性来使用 Hibernate 的 EmptyInterceptor
  • 向 Java 程序添加音乐/声音

    我正在制作一些迷你 java 游戏 我想知道如何向我的程序添加声音 音乐 我在 youtube 上观看了视频并按照提供的代码进行操作 但是出现以下错误 java io IOException 无法从输入流创建音频流 我注意到其他人用相同的代
  • 我应该在哪一层将两个实体连接在一起?

    我使用 Spring MVC 和常规 JDBC 我刚刚了解到我应该将业务流程分为表示层 控制器层 服务层和存储库 DAO 层 现在假设我有一个名为Person可以有多个Jobs Job它本身是另一个实体 有自己的属性 据我所知 存储库层仅管