我有一个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)
哪种设计会更好?谢谢你的时间
你的设计目标对我来说没有意义。 您唯一需要username
和password
的时间是在登录期间。 那个时候,username
和password
应唯一标识用户。
我相信你想要的方法是这样的:
publid Optional<User> login(
final String username,
final String password);
然后返回包含User
(由正确的用户名和密码组合标识)的Optional
,或返回带有null
的Optional
,以识别错误的用户名和密码组合。
我会使用给定的用户名、密码创建用户的实例,并在数据库中搜索用户是否退出。
伪代码:
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 更好,我希望这能解决您的问题。