2015-10-04 5 views
0

Я пытаюсь простить простой EntityManager внутри репозитория. Были ли у меня побочные эффекты?CDI + JPA репозиторий

Managed Bean:

@Named 
@SessionScoped 
public class Teste implements Serializable { 

@Inject 
Repository repo; 

} 

Repository

@RequestScoped 
public class Repository { 
    @PersistenceContext(unitName="Test") 
    EntityManager em; 

} 

Безопасно ли использовать этот подход? Я беспокоюсь о нескольких запросах к этому веб-приложению.

+0

Зависит от немного. Какой контейнер и версия? –

+0

Инъекция '@ PersistenceContext' имеет смысл. Является ли конкретная проблема, заключающаяся в том, что вы вводите репозиторий с областью действия запроса в свой тестируемый класс Teste с расширенным сроком действия? Я думаю, что это нормально, потому что CDI будет внедрять прокси-сервер с запросом, который предоставит вам свежий репозиторий по каждому запросу, хотя Teste будет обладать сеансом. – wrschneider

+0

@JohnAment, я использую Wildfly 8.2, Java 8. –

ответ

1

Можно ли использовать этот подход? Я беспокоюсь о нескольких запросах к этому веб-приложению.

Для меня это совершенно правильный подход. Так что мне немного любопытно, почему @JohnAment сказал:

Это немного зависит. Какой контейнер и версия ?.

AFAIK он будет работать независимо от контейнера. Может кто-нибудь исправить меня, если я ошибаюсь?

+0

Я полагаю, что это было бы важно только в том случае, если реализация контейнера спецификации была неправильной, но у вас, вероятно, были бы большие проблемы в этом случае. – whitlaaa

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