У меня есть следующая таблица базы данных:
User
----------
userId (int)
name (varchar)
email (varchar)
password (varchar) //is hashed
creditCard (varchar)
Во время входа я проверяю адрес электронной почты и пароль в базе данных, возвращая имя и идентификатор пользователя.
@NamedQuery(name = User.LOGIN, query = "SELECT u.userId, u.name FROM User u WHERE u.email = :email AND u.password = :password")
, который возвращает мне ArrayList, который я не могу преобразовать в пользовательский объект.
0 =
> 0 = 1
> 1 = "Bob"
Поэтому я всегда создаю новый объект, устанавливаю значения и возвращаю этот объект в пользовательский интерфейс.
User newUser = new User;
newUser.setUserId(userObject[0]);
newUser.setName(userObject[1]);
Я также мог бы select u from User u
, привести результат к пользовательскому объекту и отправить во внешний интерфейс, но я боюсь, что небезопасно отправлять пароль, данные кредитной карты, ... во внешний интерфейс.
Теперь мой вопрос, должен ли я просто вернуть весь пользовательский объект и отправить его во внешний интерфейс, или будет третье решение, которое не всегда должно создавать новый объект?