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

Não preciso fechar a EntityManager quando uso com Spring

Boa noite pessoal,

minha dúvida é muito simples, é pq em nenhum momento o instrutor fecha a entitymanager, será que quando usamos com o spring não é necessário fechar a entitymanager, pois o Spring já fecha para nós?

exemplo da classe.

@Repository
@Transactional
public class ProdutoDAO {

public void gravar(Produto produto) {
        manager.persist(produto);
    }
}
2 respostas
solução!

Fala João, tudo bem ?

É isso aí mesmo. Você deve ter percebido que quando queremos usar o EntityManager dentro do Dao, pedimos a injeção dessa dependência:

@Repository
public class ProdutoDAO {

    @PersistenceContext
    private EntityManager manager;

    public void gravar(Produto produto) {
        manager.persist(produto);
    }
}

O que ocorre é que um projeto específico (Spring ORM => https://docs.spring.io/spring/docs/5.0.4.RELEASE/spring-framework-reference/data-access.html#orm) está sendo usado para ajudar na integração com a JPA. Por isso o Spring já oferece um LocalContainerEntityManagerFactory(fábrica de entity managers do próprio spring orm). Com isso o Spring também gerencia pra nós o ciclo de vida desses objetos, sabendo a hora de construir, injetar como dependencia, fechar, destruir, etc.

=)

Espero ter ajudado. Abraço!

Obrigado Rafael eu já imaginava isso msm, mas queria tirar a duvida.

Vlw