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

Como Utilizar o Hibernate nas Classes DAO?

Olá pessoal, assumam a seguinte situação: Temos essa classe JPAUtil proposta no curso, que, ao instanciarmos um objeto, podemos utilizar a função getEntityManager para pegar um entityManager já criado pela fábrica.

Minhas dúvidas são a seguinte: 1. Qual é a melhor forma de utilizarmos/linkarmos o Hibernate nas classes DAO? 2. Cada DAO terá um atributo da classe JPAUtil que deverá ser instanciado para, assim, ter um entity manager só para ele? 3. Ou utilizaremos um entity manager único para toda a aplicação?

Abs

2 respostas
solução!

Você jamais pode usar o mesmo EntityManager para toda aplicação. Um EntityManager deve ser usado e descartado logo em seguida. Se você não fecha um EntityManger, você nunca devolverá a conexão que ele esta usando de volta para o pool de conexões. O que é único por aplicação é o EntityManagerFactory, porque sua criação é um parto para o JPA. EntityManger é rápido para criar, na velocidade da luz, mas custoso de manter ao longo do tempo. EntityManager factory é custosa para criar, mas tem custo zero depois de criada.

A forma mais indica nessa etapa é seu DAO receber no construtor sua dependência que é o EntityManager. Se você coloca o JPAUTIL dentro do DAO você terá como dependência o EntityManager e o JPAUTIL, quando na verdade você precisa apenas do EntityManager.

Existem outras formas de gerenciar isso como através do uso de injeção de dependências e tals.

Flávio,

Então no último exercício no capítulo 2 do curso de JPA e Hibernate, o certo era ter deslocado para a classe JPAUtil somente o comando:

 private static EntityManagerFactory entityManagerFactory = Persistence
                .createEntityManagerFactory("financas");

Não faz sentido colocar também o comando abaixo lá, certo?

public EntityManager getEntityManager() {
            return entityManagerFactory.createEntityManager();
       }

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