В Spring Data Repository
интерфейсов, следующая операция определена:Как правильно использовать Spring Data Repository # save()?
public T save(T entity);
... и документации говорится, что приложение должно продолжать работать с возвращенным объектом.
Я знаю об reasoning за этим решением, и это имеет смысл. Я также вижу, что это работает отлично для простых моделей с независимыми объектами. Но, учитывая более сложную модель JPA с большим количеством подключений @OneToMany
и @ManyToMany
, возникает следующий вопрос:
Как приложение должно использовать возвращенный объект, когда все остальная загруженная модель все еще ссылается на старую, которая была перешел в save(...)
? Кроме того, в приложении могут быть коллекции, которые все еще содержат старый объект. JVM не позволяет глобально «обменивать» несохраненный объект с сохраненным.
Итак, каков правильный шаблон использования? Любые лучшие практики? До сих пор я встречал только примеры игрушек, которые не используют @OneToMany
или @ManyToMany
и поэтому не сталкиваются с этой проблемой. Я уверен, что много умных людей думали долго и трудно об этом, но я не могу понять, как использовать это правильно.