Это зависит от ваших бизнес-требований и потребностей бизнеса.
На первый взгляд он кажется полностью избыточным (с обеих сторон, база данных (избыточный банк FK) и сторона OO (избыточная ссылка).
Но здесь ничто не говорит мне, что пользователь в заказе и пользователь в транзакции на самом деле одно и то же ...
Как вы объясняете, это "кажется" одинаковым, но лично я не знаю. Так что, если оба пользователя могут быть "разными", эта модель работает.
Теперь, если мы предположим, что пользователь всегда одинаков в обеих концепциях, и у вас есть такой вариант использования: load transactions by some criteria (timestamp, priority, whatever) "owns" by a specific user
Без какой-либо "пользовательской" информации в транзакции вы должны l oop просмотреть все его заказы и отфильтровать / восстановить транзакции, которые вы нужно. С пользовательской информацией внутри вы можете напрямую добраться до таблицы транзакций (и вы даже можете избежать быстрой загрузки Order
или просто использования проекции DTO).
Теперь возможно вместо сохранения hard reference
во User
Вы можете просто сохранить ссылку на него: private Long userId
и таким образом уменьшить риск возникновения циклических c зависимостей.
Имейте это в виду -> ll избыточность.
В реляционном моделировании избыточность возникает, когда вы применяете некоторую денормализацию к вашей модели, а иногда это просто необходимо (с точки зрения производительности, необходимости варианта использования, потребности проекции ...).
Если вы в сознании и согласны с этим, это нормально. Просто позаботьтесь о Consistency
проблеме, которая может возникнуть, и будьте готовы обработать это свойство.