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

Diferença de performance

Não percebi ganho de performance após fazer o exercídio 9 (Criando o JPAUtil) do capítulo 2 (Configuração e inicialização do JPA). Sei que um atributo estático será inicializado apenas uma vez, mas no contexto desse exercício, todas as vezes que a classe JPAUtil for instanciada, o atributo EntityManagerFactory também será criado e por consequência, toda vez que executarmos a classe JPATest a classe JPAUtil será executada. Ou seja, considerando especificamente esse exemplo do exercício, parece que não fez diferença do ponto de vista de performance tirar a criação do EntityManagerFactory da classe JPATeste e passar para a classe JPAUtil. Alguém pode ajudar a entender isso? Obrigado

2 respostas
solução!

Da forma como foi solicitado para fazer não dá qualquer diferença mesmo, e em alguns casso pode até aumentar ligeiramente o tempo, devido à inicialização de mais um objeto. Na prática, cria-se uma instância da classe como a JPAUtil uma vez, executa-se tudo o que é necessário e depois fecha-se a conexão com o banco. O problema não é criar uma classe separada, mas sim, o momento certo de abrir e fechar a conexão. Muitos sistemas são construídos mantendo-se a conexão aberta por períodos mais longos justamente quando a questão desempenho é mais significativa do que a escalabilidade horizontal, ou seja, a possibilidade de ter muitas conexões ao mesmo tempo.

Obrigado pela explicação Sandro.