@ Транзакционная пружина JPA .save () не нужна? - PullRequest
0 голосов
/ 27 апреля 2020

Я понимаю, что если мы используем аннотацию @Transactional. Метод save () не обязателен. Это точно?

А для моего примера:

@Transactional
void methodA() {
   ...
   ObjectEntity objectEntity = objectRepository.find(); 
   methodB(objectEntity);
}

void methodB(ObjectEntity obj) {
   ...
   obj.setName("toto");
   objectRepository.save(obj);    <-- is it necessary?
}

Спасибо за помощь

1 Ответ

0 голосов
/ 27 апреля 2020

Это работает следующим образом:

  • save() присоединяет объект к сеансу, и в конце транзакции, пока не было исключений, все это будет сохранено в база данных.

  • Теперь, если вы получаете объект из БД (например, ObjectEntity objectEntity = objectRepository.find();), тогда этот объект уже присоединен, и вам не нужно вызывать метод save () .

  • Если объект, однако, отсоединен (например, ObjectEntity objectEntity = new ObjectEntity();), то необходимо использовать метод save () , чтобы присоединить его к сеансу, чтобы изменения, внесенные в него, сохраняются в БД.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...