gpt4 book ai didi

java - 将 ID 与对象分开

转载 作者:行者123 更新时间:2023-11-30 04:36:40 25 4
gpt4 key购买 nike

我有一个 Java 对象user,它存储在带有主键的数据库中。例如:

id | login | name | surname
---------------------------
0 | admin | Bob | Marley
1 | ..... | .... | ......

addUser , getUserById , editUser以及可由我的应用程序的 Java 客户端调用的其他 API 操作。每个这样的请求都由一个 Java 对象组成,例如:

class EditRequest {  
User newUserProfile;
}

我在为这些操作定义模型时遇到问题:我应该使用一个对象 User有四个字段 id , log , name ,和surname对于所有操作,或者我应该将它们分隔为 UserUserValue ,其中第二个对象包含除 ID 之外的所有字段。第二个对象不包含 ID 的原因是它打算在 addUser 中使用。操作中,除了ID之外的所有字段都从客户端传递,因为ID是在服务器端为新用户生成的。这种分离将允许我构造一个对象 UserValue在客户端上,而不是创建 User 的实例ID 字段为空。解决这个问题的第三种方法是始终将 User 和 ID 分开保存,并在必要时使用 Map 将它们绑定(bind)在一起。最好的选择是什么?

最佳答案

“标准”方法是每个表(实体)只有一个对象。如果你看看 Java Persistence API方法是创建一个对象。对于尚未持久化到数据库的对象,主键字段为空。

使用代表同一实体的单独对象会导致代码困惑和重复。每次您必须添加新字段时,您都必须在 2 个位置添加,并且存在不匹配或忘记更新其他位置的风险。

我会认真考虑使用现成的 ORM 包来实现 JPA(例如 Hibernate 或 EclipseLink),而不是自己做事。您只需花费很长时间,并且只实现这些框架提供的开箱即用功能的一小部分。

关于java - 将 ID 与对象分开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13327688/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com