设计:更新部分数据库记录的最佳方法是什么?

时间:2016-07-11 11:32:06

标签: forms software-design

这个问题涉及最佳设计方法,而不是特定的技术方法。我有一个数据库表,其中包含系统用户的详细信息,即:用户名,密码,名字,姓氏(这些属性只能由管理员更改)。用户记录的其余部分包含地址,电话号码,手机号码等(这些属性只能由用户更改)。

因此,我需要2个表单,一个“管理”表单和一个“用户”表单,每个表单上都有一组不同的可编辑字段,以及适当的基于角色的安全性来控制使用情况。

以下是我可以采取的两种方法:

方法1.每个表单都有自己的支持bean,只代表表单上的可编辑字段。在“保存”上,辅助bean调用特定的DAO方法(例如UpdateUser_Admin或UpdateUser_User)来执行用户记录的部分更新。因此,这种方法涉及2种形式,每种形式的支持bean,以及DAO类中的2种方法。

方法2.前面有两个表单,但每个表单通过使用可编辑字段的输入字段和不可编辑字段的隐藏字段重新创建整个User对象。两种形式都使用相同的支持bean来表示所有用户属性。 DAO中只需要一个方法 - 更新用户记录中的所有字段。

第二种方法似乎对我有意义,但我对发展很陌生,如果读者可以建议我是否遗漏某些东西,我将不胜感激。我已经考虑将User表拆分为2个单独的表,但在这种情况下这是不实际的。谢谢你的建议。

1 个答案:

答案 0 :(得分:1)

  • 通常:不要创建仅更新单个字段/属性的DAO方法。
  • 不要将User实体拆分为2个表格。
  • 创建DAO来管理实体,因此为每个类使用一个DAO,并为每个DAO仅编写一个更新方法。
  • 如果您不确定完整实体是否遵循此步骤在服务层中

    • 从表单中获取数据(至少是您要更新的ID和字段)
    • 从数据库中检索表示实体的Object(例如DAO::readById(id)
    • 在java Object
    • 中更新您需要的字段
    • 致电DAO::update

      注意:我无法将DTO填充到DBO个对象