Spring Data JPA - Почему изменения в возвращенном объекте автоматически сохраняются?
Я представляю вопрос с примером.
Утверждают, что у нас есть репозиторий, такой как ниже:
public interface ExampleObjectRepository extends CrudRepository {
}
РасширяяJpaRepository
интерфейс,ExampleObject
хранилище наследует следующий метод:
T findOne(ID id);
Теперь я заметил, что, если я получаю ссылку на ExampleObject после вызова этого метода, любые манипуляции с этим методом автоматически сохраняются в базе данных, например:
ExampleObject pointInCase = exampleObjectRepository.findOne(1L);
pointInCase.setName("Something else");
Читая вокруг темы, я понимаю, что это означает, чтоExampleObject
экземпляр есть.not detached
Это противоречит моим ожиданиям. Я ожидал, что мне нужно будет использовать метод сохранения, унаследованный отCrudRepository
чтобы сохранить изменения:
T save(T entity);
Будет ли кто-нибудь достаточно любезен, чтобы подтвердить, что объекты, возвращенные из репозитория Spring Data JPA, остаются присоединенными в качестве стандарта, и объяснить, как использовать API для пометки метода в хранилище, чтобы он возвращал только отдельные ссылки?
Я представляю, что изменение сущностиСостояние s также может изменить свое определение, когда оно используется с указаннымsave(T entity)
метод, поэтому я также был бы признателен за понимание того, как обрабатываются для обновления.