Я использую Hibernate, и у меня есть проблема с процессом / рекомендациями. Для примера, давайте предположим, что у нас есть 2 объекта Truck и Wheel. Колесо имеет 2 свойства wheelid и wheelmanufacturer. Поэтому в моем приложении пользователь может создать грузовик, выбрать различные колеса, которые существуют в базе данных, или создать собственное колесо.
Мой вопрос: когда я получаю объект грузовика из внешнего интерфейса, как мне убедиться, что если колесо существует в базе данных, используется копия базы данных, а если ее нет в базе данных, добавлен. Вот простой пример того, как мои службы работают сейчас
public Truck saveTruck( Truck truck )
{
//Yes, this is a two-wheel truck =)
Wheel frontWheel = truck.getFrontWheel();
if( frontWheel != null && frontWheel.getWheelId() != null )
{
Wheel dbWheel = wheelDao.getWheelById( frontWheel.getWheelId() );
if( dbWheel != null )
{
truck.setFrontWheel(dbWheel );
}
}
}
Мотивация для этого заключается в том, что я не хочу, чтобы пользователи могли перезаписывать объекты в базе данных, однако они должны иметь возможность писать собственные. Приведенный выше код работает, но он становится очень избыточным, если у вас есть грузовик с 10 свойствами. Мне было интересно, как другие решают эту проблему.
Спасибо