Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Acesso banco de dados: entidade x relacionamento

Não entendi um ponto na aula.

em.close();
System.out.println(pedido.getData());

Para apresentar o resultado do pedido.getData(), não é necessário ir ao Banco de Dados? Tanto é que no console aparece o SELECT. Como isso é possível sendo que o EntityManager (EM) foi fechado? Porque entendi que o problema do Lazy Initialization é que se o EM estiver fechado, não será possível fazer o Join com a tabela do relacionamento. Mas para fazer recuperar qualquer atributo da entidade (como no exemplo da data da entidade "Pedido") também não seria necessário uma conexão com o banco de dados e, portando, necessário que o EM estivesse aberto? Agradeço muito se alguém puder esclarecer esse ponto.

2 respostas
solução!

Quando realizado a query, o EM busca no banco todos os atributos da entidade Pedido (exceto os com Lazy Initialization) e os armazena no objeto pedido. Dessa forma mesmo se o EM estiver fechado, o pedido já contem os dados que o getData() retorna.

Somente os dados que são Lazy que tentaria disparar uma nova consulta no banco e ocasionaria o erro citado na aula porque tentaria realizar uma nova conexão e o EM estaria fechado.

Obrigada Rodrigo!