Спящий режим — лучший способ хранения пользователей

#java #database #hibernate

#java #База данных #гибернация

Вопрос:

Для моего приложения есть два типа пользователей. Клиент и продавец. Я хотел бы сохранить их обоих в одной и той же таблице «пользователи» по соображениям аутентификации. Но и у клиента, и у продавца одинаковые и разные значения.

У них обоих есть имя, пароль, идентификатор… Но они также имеют разные значения, у клиента есть адрес. И у продавца есть список продуктов.

Я хотел бы использовать композицию. Вот так: Пример композиции

Таким образом, и у продавца, и у клиента есть пользовательские данные. Но у них также есть свои собственные отдельные значения, такие как адрес или продукты.

Будет ли это разумным способом сделать это. Или мне лучше иметь обоих пользователей в отдельной таблице?

Кроме того, поскольку я использую Hibernate, мне нужно иметь возможность сопоставлять мои классы с моей базой данных. Что было бы лучшим способом для этого?

Ответ №1:

Технически, с точки зрения хорошей практики, я думаю, вы выбрали правильный подход. Если это произойдет, вам нужно будет добавить какое-либо дополнительное поле, тогда никаких проблем возникнуть не должно. Что делает его гибким.

Как я предполагаю, пользователю, который регистрируется, будет предоставлена роль либо продавца, либо клиента.

Первая мысль, которая пришла мне в голову, возможно, заключалась в использовании отношения наследования. Но в этом случае, если вы будете использовать какой-либо тип безопасности, будет достаточно единой таблицы для всех учетных данных пользователей. Вам не придется так сильно бороться с авторизацией / аутентификацией.

Комментарии:

1. Конечно, я смотрю на это с точки зрения безопасности Spring, потому что в случае реализации интерфейса UserDetails вы все равно сможете использовать одну таблицу, не выясняя и не реализуя какие-либо условия для определенного типа пользователя.

2. Спасибо за объяснение, что я понял правильную идею. Не могли бы вы указать мне правильное направление с помощью некоторых полезных руководств? я был бы очень признателен

3. Из того, что я знаю, у вас будет Spring на стороне сервера?

4. Я использую Jersey и H2 для серверной части. Но я думаю, что это почти то же самое с отображением в режиме гибернации

5. persistentdesigns.com/wp/jersey-spring-and-jpa