Spring 服务 - 我应该传递实体 ID 还是实体本身?



我有一个User休眠实体:

@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column
private String username;
@Column
private String password;
// Getters and setters here
}

如果我想创建一个验证用户凭据的UserService方法,validate方法的设计是否应如下所示:

public Boolean validate(Long userId, String username, String password)

或者像这样:

public Boolean validate(User user, String username, String password)

哪种设计会更好?谢谢你的时间

你的设计目标对我来说没有意义。 您唯一需要usernamepassword的时间是在登录期间。 那个时候,usernamepassword应唯一标识用户。

我相信你想要的方法是这样的:

publid Optional<User> login(
final String username,
final String password);

然后返回包含User(由正确的用户名和密码组合标识)的Optional,或返回带有nullOptional,以识别错误的用户名和密码组合。

我会使用给定的用户名、密码创建用户的实例,并在数据库中搜索用户是否退出。

伪代码:

public booelan validate(User user) {
userService.findUser(user) != null;
}

您应该使用给定的用户名、密码创建用户的实例

User user = new User(userName, password);\I am assuming username should be unique

然后在代码中使用:

if (isValidate(user)) {
//doSomething();
}

您可以简单地在UserRepository中添加一个方法:

User findByIdAndUsernameAndPassword(long id, String userName, String pass);

如果所有这些字段都与特定数据库条目匹配,这将返回 User。

传递实体 ID 更好,我希望这能解决您的问题。

最新更新