1) Кэш первого уровня создается для каждой запущенной транзакции, поэтому он всегда существует для каждого метода транзакции.
2) entityManager.flush()
, не очищаетсякеш второго уровня.Он также не очищает кэш первого уровня, он заставляет любые изменения, сделанные в текущей транзакции, помещаться в физическую базу данных.
3) Является ли entityManger.flush()
похожим на System.gc()
?Нет, все объекты все еще находятся в куче и даже управляются текущим контекстом постоянства.