Мы используем Guice Persist, чтобы внедрить EntityManager в наш проект.
например.
public class MyDao{
@Inject
EntityManager em;
public void someMethod(){
//uses em instance
}
}
Но нам неясно, как будет использоваться введенный экземпляр EntityManager
.
- Какой тип EntityManager это? (см. например: типы менеджеров сущностей) Под капотом Guice Persist создает экземпляр через
EntityManagerFactory.createEntityManager()
, поэтому я бы сказал, что это менеджер приложений, управляемый приложениями. Но в официальная Wiki они пишут о стратегии seeion-per-transaction, которая предполагает, что EntityManager является (псевдо) транзакционным охватом. - Должны ли мы ссылаться на close() на нем вручную? Или Гиис позаботится об этом?
- Какова область кеш первого уровня? Только одна транзакция (например, в менеджерах сущностей с транзакциями) или до тех пор, пока я использую тот же инъецируемый экземпляр
EntityManager
(как в менеджерах сущностей, управляемых приложениями)?