Primeiramente, parabéns ao Nico pela didática do curso. =D
Na 4ª aula, o problema do LazyInicializationException consequente do relacionamento LazyLoading e o escopo da requisição sendo Request foi resolvido fazendo o "recarregamento" do objeto livro no bean conforme ele é demandado.
Ok, imagino que essa seja uma solução adequada e talvez a que provê uma menor sobrecarga no servidor.
Porém, consegui resolver esse mesmo problema alterando o escopo do EntityManager de "RequestScoped" para "SessionScoped" no método produtor, ficou assim:
@Produces
@SessionScoped
public EntityManager getEntityManager() {
return emf.createEntityManager();
}
Entendo que fazendo assim a conexão será reutilizada durante o ciclo de vida do usuário na aplicação. Criando então, um objeto EntityManager para cada usuário.
Minhas duvidas:
- A minha solução representa algum problema de desempenho ou segurança?
- Como posso monitorar o desempenho do servidor/aplicação?
- Qual o impacto se eu mudar o escopo para ApplicationScoped e assim compartilhar a conexão com todos os usuário?
- Onde posso encontrar um material completo para entender o cenário mais adequada para cada escopo do CDI?