Есть например два класса Document и User. У Document есть поле creator (из числа существующих пользователей). Как стоит задать такое поле? по id класса User или напрямую подставлять User?
private Integer userId;
OR
private User user;
В идеале услышать минусы/плюсы вариантов кратко. Спасибо
Не могу найти у себя в голове ни одного аргумента в пользу варианта:
private Integer userId;
Причем неважно: one-to-many, many-to-one и т.д.
Во всех известных мне реализациях DAO/ORM используется всегда связь типа:
private User user;
Ну разве что в терминах ORM это может быть раскрыто приблизительно так (пример по OrmLite):
@DatabaseField(columnName = userId, index=true, foreign = true)
private User user;
Откуда примерно понятно, что в реале связь естественно через userId, но конечный DAO объект уже будет private User user
Вариант private User user, как по мне, более правильный с точки зрения проектирования БД. Задаете связь oneToMany, oneToOne и в таблице БД Document получите айди user. Document со всеми user можно получить одним запросом выборки с документов. Так же само можно получить все документы по нужному пользователю.
Далее еще важен вопрос сколько может быть user на document. Если один, то вариант с айдишкой, в принципе, тоже можно использовать, хотя и не совсем правильно.
Если же user на document будет больше одного, тогда однозначно лучше использовать указанные выше связи, либо вариант manyToMany
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости