Итак, у меня есть этот метод:
@Transactional
public void savePostTitle(Long postId, String title) {
Post post = postRepository.findOne(postId);
post.setTitle(title);
}
Согласно этому сообщению :
Метод сохранения не имеет смысла. Даже если мы удалим его, Hibernate
по-прежнему будет выдавать оператор UPDATE, поскольку объект управляется и
любое изменение состояния распространяется до тех пор, пока текущий
EntityManager открыт.
и действительно, оператор обновления выдается, но если я запускаю метод без аннотации @Transactional
:
public void savePostTitle(Long postId, String title) {
Post post = postRepository.findOne(postId);
post.setTitle(title);
}
Hibernate не будет выдавать оператор обновления, поэтому необходимо явно вызвать postRepository.save(post);
.
В чем разница между использованием @Transactional
или нет в этом конкретном сценарии?