JPA – Comparativo entre Hibernate e EclipseLink

JPA

Neste tutorial irei mostrar um comparativo entre os frameworks de persistência Hibernate e EclipseLink.

Se fazendo uma comparação entre o Hibernate e EclipseLink, ambos os frameworks implementam a especificação JPA. Existem diferenças sim entre os dois, mas eles tem o mesmo propósito.
O Hibernate é mais antigo, nasceu sem a especificação JPA, mas hoje em dia é comum se acessar o Hibernate pela especificação JPA.
O Hibernate é da empresa RedHat, o EclipseLink é da emprea EclipseFoundation. Embora o Hibernate tenha originado o JPA, hoje o EclipseLink é a implementação referencial. Só que o Hibernate é o padrão de mercado.

Se quisermos saber, qual dos dois tem melhor performance, isso é relativo. Para eu que utilizo o Hibernate há mais tempo, eu tenho mais familiaridade com ele. Mas dependendo da situação, o EclipseLink pode ser melhor.
O EclipseLink fornece entradas e recursos de cache muito mais sofisticados, com oarmazenamento em cache isolado, para suporte a banco de dados privado virtual (virtual private database). Ele tem um cache de objetos compartilhados, totalmente integrados. Assim, não só o gerenciamento de contexto de persistência local é eficiente, mas também todos os threads no mesmo servidor podem se beneficiar do contexto compartilhado em cache.

Como os dois frameworks implementam a mesma especificação, depois de se desenvolver uma aplicação, é possível se alterar de um framework para o outro, sem precisar fazer grandes alterações no código-fonte ?
Na teoria sim, deveria ser assim.

A linguagem de consulta principal é a JPQL (Java Persistence Query Language), uma linguagem de consulta independente de banco de dados, que opera no modelo de entidade lógica, em referência ao modelo de dados físicos. Mas na pŕatica vai depender do dialeto nativo do SQL usados na linhas do código-fonte da aplicação (O que não é recomendado).
Por exemplo, a estrutura de consulta do EclipseLink, foi a forma mais eficiente de se desbloquear toda a capacidade de seu mecanismo de consulta. E mesmo com a utilização do JPQL, as apis de programação ainda permanecem em uso para dar acesso a recursos ainda não suportados pela linguagem de consulta padrão.

Conforme podemos pesquisar em sites especializados de comparação de frameworks JPA, como no site JPAB (JPA Performance Benchmark):
- O Hibernate tem melhor performance sobre o EclipseLink, utilizando o banco de dados MySQL.

JPA

- O EclipseLink tem melhor performance sobre o Hibernate, utilizando o banco de dados PostgreSql.

JPA

Se alguém tiver dúvida sobre a confiabilidade dos testes deste site, é somente realizar um teste integrado com os frameworks e os bancos de dados que se quiser testar.

Foram criadas duas aplicações para se realizar os testes integrados. Uma aplicação vai utilizar o Hibernate e acessar os bancos de dados MySql e PostgreSql, e a outra aplicação vai utilizar o EclipseLink, e acessar os bancos de dados MySql e PostgreSql.

A aplicação criada para o teste se chama Blog, uma para cada teste. Foi criado um teste integrado chamado TesteCrudJPA, em ambas as aplicações para ser executado com o Junit.
Após realizados os testes integrados básicos, foi constatado um item da tabela de performance do site JPAB.
E foi confirmado com os testes que:
- O Hibernate tem melhor performance sobre o EclipseLink, utilizando o banco de dados MySQL.
- O EclipseLink tem melhor performance sobre o Hibernate, utilizando o banco de dados PostgreSql.

Coloquei os resultados do teste em uma tabela. Os melhores resultados de tempo de execução, ou tempo decorrido total, estão na cor vermelha.

JPA

Seguem os exemplos de aplicações Java com JPA, para fazer os testes, utilizando Hibernate: Baixar Código-Fonte via GitHub e utilizando
EclipseLink: Baixar Código-Fonte via GitHub

No vídeo abaixo, irei mostrar este tutorial.

Para ver o vídeo no YouTube Clique Aqui

Por favor, deixe seu like se gostar da dica.

Fonte: https://hibernate.org/orm/releases/5.3/
https://www.eclipse.org/eclipselink/documentation/2.6/solutions/install.htm
https://www.eclipse.org/eclipselink/documentation/2.6/solutions/toc.htm
https://www.jpab.org/Hibernate/MySQL/server/EclipseLink/MySQL/server.html
https://www.jpab.org/Hibernate/PostgreSQL/server/EclipseLink/PostgreSQL/server.html

Esta entrada foi publicada em Java SE. Adicione o link permanenteaos seus favoritos.

Os comentários estão encerrados.