Зачем нам нужен javax.persistence.EntityManager.detach (), если у нас есть session.evict ()? - PullRequest
0 голосов
/ 29 мая 2018

также, что делает метод javax.persistence.EntityManager.remove() отличным от двух вышеуказанных методов?

В чем разница между session.evict (),

javax.persistence.EntityManager.detach () и

javax.persistence.EntityManager.remove (), session.delete ()?

1 Ответ

0 голосов
/ 29 мая 2018

Эти три метода используются для самых разных вещей.

  1. remove() помечают постоянную сущность для удаления, что означает, что в момент сброса hibernate сгенерирует соответствующий оператор sql delete.
  2. evict() - для удаления объекта из внутреннего кэша (спящий режим первого уровня).Если вы загружаете сущность из * 1009, * hibernate сохранит ее в кеше, и последующий запрос сначала попадет в кеш.Исключение сущности заставляет hibernate снова запросить db.
  3. detach() используется, когда вы хотите сделать сущность неуправляемой.По сути, вы указываете hibernate прекратить отслеживание этой модификации сущности (грязная проверка), чтобы при любом изменении ее поля вы не отражали эти изменения на db.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...