Sobes.tech
Junior — Middle

Pode explicar o que é o cache de nível um no EntityManager e como ele funciona?

sobes.tech IA

Resposta da IA

A cache de primeiro nível (First Level Cache) no EntityManager é um mecanismo integrado no próprio EntityManager para armazenar objetos carregados da base de dados dentro de uma mesma sessão (transação).

Como funciona:

  • Ao carregar uma entidade através do EntityManager, o objeto é guardado na cache de primeiro nível.
  • Se, durante a mesma sessão, a mesma entidade com o mesmo identificador for solicitada, o EntityManager devolve o objeto da cache em vez de fazer uma nova consulta à base de dados.
  • A cache de primeiro nível funciona apenas dentro de um único EntityManager (sessão).
  • Ao fechar a sessão, a cache é limpa.

Isto melhora o desempenho ao reduzir o número de acessos à base de dados e garante a consistência dos dados dentro de uma mesma transação.

Exemplo:

EntityManager em = entityManagerFactory.createEntityManager();
em.getTransaction().begin();

User user1 = em.find(User.class, 1); // consulta à base
User user2 = em.find(User.class, 1); // da cache de primeiro nível, sem nova consulta à base

em.getTransaction().commit();
em.close();

Assim, a cache de primeiro nível ajuda a otimizar o trabalho com a base de dados, reduzindo consultas redundantes.