如何坚持一对一的关系? (没有框架)

时间:2013-08-31 12:05:21

标签: java mysql dao

现在我为每个实体都有一个DAO。

当我保存某个实体时,比如说Employee,它需要链接到相应的Node实体以显示在树中。

如何在保持代码尽可能简单的同时完成这项工作?

编辑:这里有一些额外的细节。在OO中,我想要实现的是能够让Node引用一个对象,并且有可能在另一个Node下找到它。这样,只需要一个节点来描述树,同时可以从包含的对象中获取不同的属性。这是我看待事物的方式:

节点1-1 NodeObject 1-1员工

2 个答案:

答案 0 :(得分:1)

创建树的节点并不真正意味着一对一的关系,而是一对多的关系。

在这些术语中,您的Employee表可以有一个列,表示其中每个实体所属的节点的ID。

在你的DAO中,你应该

  • 将您想要连接的EmployeeNode个对象作为参数传递给您的方法,
  • 通过查找对应的数据库在数据库中查找Node对象的ID 实体,
  • 使用对象中的数据创建员工实体 和提取的Node ID。

事实上,你的问题应该更具体。

根据以下评论编辑:

如果您的Node表格代表树,并且您希望每个NodeEmployee建立一对一的关系,那么这取决于哪些参考对您很重要。

  1. 您希望能够引用属于某个节点的员工(可能)。
  2. 您想要找到员工所属的节点(不太可能,但可能)。
  3. 如果您只需要1号,那么您将拥有Node实体中员工的ID。如果您需要两者,那么您还可以将节点的ID放在Employee实体中。

    上述DAO方法的逻辑仍然适用。

答案 1 :(得分:1)

假设您在员工和员工详细信息之间存在一对一关联。

Employee(Data Object)------>Employee Table
Employee Detail(Data Object)------>Employee Details Table

员工详细信息具有列员工ID,它是Employee表的外键。

现在你想要坚持员工。首先,您将持久保存Employee对象并获取其主键。现在使用主键Employee table填充Employee Detail的属性employeeId。现在保留Employee Detail对象。

要在单个go中加载两个实体,请使用Employee和Employee Details Table之间的内部联接