Spring Service - Должен ли я передавать идентификатор объекта или сам объект? - PullRequest
0 голосов
/ 07 мая 2018

У меня есть 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)

Какой дизайн будет лучше? Спасибо за ваше время

Ответы [ 3 ]

0 голосов
/ 07 мая 2018

Ваша цель дизайна не имеет смысла для меня. Единственный раз, когда вам нужно username и password, это во время входа в систему. В это время, username и password должны однозначно идентифицировать пользователя.

Я считаю, что метод, который вы хотите, это:

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

Затем либо верните Optional, который содержит User (как определено правильной комбинацией имени пользователя и пароля), либо верните Optional с null, чтобы определить неверную комбинацию имени пользователя и пароля.

0 голосов
/ 07 мая 2018

Вы можете просто добавить метод в свой UserRepository:

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

Возвращает пользователя, если все эти поля соответствуют определенной записи базы данных.

Передача entityId лучше , я надеюсь, что это соответствует тому, что вы спрашивали.

0 голосов
/ 07 мая 2018

Я бы создал экземпляр пользователя с заданным именем пользователя, паролем и поиска в базе данных, если пользователь вышел или нет.

Псевдокод:

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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...