2015-11-18 4 views
1

У меня есть среда JPA, у которой есть EntityManager, управляемый приложениями. Я вручную создаю entityManagerFactory и создаю EntityManager из этого. Я хотел бы использовать тот же EntityManager для нескольких потоков. В документации говорится, что EntityManager не является потокобезопасным, но все мои операции будут считаны только, и никакие записи не будут выполняться через EntityManager. У меня также есть тайм-аут для данных в кеше, чтобы обеспечить согласованность. В таком сценарии можно ли использовать тот же экземпляр EntityManager по потокам? Или могут быть какие-либо побочные эффекты/неправильные данные при использовании одного и того же EntityManager по потокам.Использование того же EntityManager для нескольких потоков

Благодаря

+3

Даже если ваш EntityManager для чтения только для целей, он все еще имеет внутреннее состояние. Используйте EntityManagerFactory, чтобы делиться между потоками и использовать другой EntityManager для каждого потока – morgano

ответ

0

Чтобы быть уверенным, просто заблокировать EntityManager экземпляр, где бы вы использовать его с помощью synchronized.

Таким образом, вместо того, чтобы писать

em.persist(...); 

написать

synchronized (em) { 
    em.persist(...); 
} 

Вы можете read up about the locking mechanism here.

 Смежные вопросы

  • Нет связанных вопросов^_^