3
respostas

duvida exercício JAVA e JPA - "Quais são os estados?"

O correto não seria ? Detached Transient Managed

No exemplo abaixo, ele cria a conta no primeiro EntityManager e encerra. "OK"

Logo apos ele cria um outro EntityManager "em2" , e executa um em2.find, quando ele executa o find o objeto fica no estado gerenciado (managed), correto?

Conta conta = em.find(Conta.class, 1);

em.close();

EntityManager em2 = ...

// aqui

conta = em2.find(Conta.class, 1);

conta.setTitular("Daniel");

3 respostas

Olá Luiz,

O objeto conta era managed pelo em1. Assim que ele foi fechado, ele se tornou detached, e abrir um outro EntityManager não faz ele voltar a ser managed.

Abraços, Victor.

Victor, boa tarde!

Na minha visão:

Conforme a explicação quando é feito um conta =em.find(Conta.class, 1); o objetivo se torna "managed" .

Apos isso o entityManager é encerrado e o objeto conta esta como detached.

Depois é aberto um outro entityManager no qual é executado novamente um conta=em2.find(Conta.class, 1); e o objeto se torna "managed" novamente, ou seja, esta sincronizado e esta sendo gerenciado.

Não entendi o motivo, pq o objeto é detached se foi feito o "em2.find(Conta.class, 1); " novamente .

Qual a diferença do primeiro bloco em1 para o bloco em2?

Att, Luiz Nascimento

O exercício pergunta sobre o estados das entidades no momento do comentário // aqui. Nesse ponto de execução, o em2.find(...) ainda não foi executado.

Abraços, Victor.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software