Entity Manager очищается автоматически после каждого запроса? - PullRequest
0 голосов
/ 16 сентября 2018

Spring предоставляет один Entity Manager на поток. Но я не могу найти информацию, если Spring очищает Entity Manager после завершения выполнения метода @RestControllers? Так, например, если у меня есть метод, подобный этому

    @GetMapping("/{id}")
    public ResponseEntity<SomeEntity> someRequest() {
        SomeEntity res = someService.doSomeJpaRelatedWork();
        return new ResponseEntity<>(res), HttpStatus.OK);

    }

Будет ли Spring вызывать EntityManager.clear () после запроса или Entity Manager сохранит сущности для дальнейших запросов в этом потоке?

1 Ответ

0 голосов
/ 16 сентября 2018

Поскольку ваш метод не использует EntityManager и не имеет аннотации @Transactional, он полностью независим от EntityManager и сам по себе не повлияет на EntityManager.

. Также,Я сомневаюсь, что Spring будет вызывать clear неявно.

НО Spring не использует один EntityManager на Thread, но один на запрос.Поэтому следующий запрос в вашем веб-приложении получит новый EntityManager с чистым кешем 1-го уровня.Таким образом, хотя правильный ответ на вопрос, который вы задали, - «Нет, clear не вызывается», ответ, который, вероятно, уместен, - «Да, EntityManager ясен при каждом вызове вашего метода контроллера».

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