EclipseLink vs Hibernate, vale a pena ?

1,519 views
Skip to first unread message

Mesias

unread,
Jan 12, 2011, 6:47:28 AM1/12/11
to disc...@cejug.java.net, pb...@googlegroups.com, jav...@googlegroups.com
No meu trabalho estão questionando o uso do Hibernate, a performance do EclipseLink é extremamente superior ao Hibernate, principalmente nos selects. Comecei a pesquisar equivalencias entre os frameworks, material disponivel para customização de algumas cosas que uso por causa do banco Legado. Por enquanto supre boa parte do que preciso, exceto pelo Validator do Hibernate que se integra ao Jsf2.

Alguém tem alguma contra-indicação do EclipseLink?

--
======================================
Alejandro Mesias André Nebra Perez
Java/Python/Js/Something else Programmer
Skype.: meszias
Msn.:    amoavidas...@hotmail.com
Twitter: @meszias
Linux User #442506
Campinas - SP - Brasil - South America
======================================

Luiz

unread,
Jan 12, 2011, 10:56:03 AM1/12/11
to jav...@googlegroups.com
eu me arrependo de ter usado hibernate, quando poderia usar eclipselink
em um projeto onde EU estava liderando :(
mas eu daria uma chance ao datanucleus tambem ;)
--
Sent from my Personal Computer. Haters gonna hate

Mesias

unread,
Jan 12, 2011, 12:20:40 PM1/12/11
to jav...@googlegroups.com
Problema que estou tendo é que está fazendo um número abusivo de selects. Por exemplo: Na minha entidade ela faz referencia em 3 lugares diferentes a outra entidade, inclusive faz uma referencia a ele mesmo ou seja:

@Entity
@Table(name = "cadprest")
... named queries ...
public class Cadprest implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @Column(name = "codprest")
    private String codprest;
    .........
    @JoinColumn(name = "codopecad", referencedColumnName = "codope")
    @ManyToOne
    private Cadope cadope;
    @JoinColumn(name = "codopeatu", referencedColumnName = "codope")
    @ManyToOne
    private Cadope cadope1;
    @OneToOne(mappedBy = "cadprest")
    private Cadope cadope2;    
    @OneToMany(mappedBy = "cadprest")    
    private List<Cadprest> cadprestList;
    @JoinColumn(name = "equipesug", referencedColumnName = "codprest")
    @ManyToOne
    private Cadprest cadprest;

Não posso alterar as entidades, apenas mudar algo nas annotations. O Banco de dados é legado, por isso ele faz essas referências.

Marcio Eduardo

unread,
Jan 12, 2011, 1:12:40 PM1/12/11
to jav...@googlegroups.com
Tu esperimentou colocar tudo em Lazy?

--
Você recebeu esta mensagem por que é membro do Javasf
http://groups.google.com/group/javasf
 
Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil

Mesias

unread,
Jan 12, 2011, 1:44:28 PM1/12/11
to jav...@googlegroups.com
Bom ter perguntado isso, acabei de fazer isso, melhorou muito. Mas não chegou perto do eclipselink

2011/1/12 Marcio Eduardo <marcio...@gmail.com>

Rafael de Paula Souza

unread,
Jan 12, 2011, 4:00:39 PM1/12/11
to jav...@googlegroups.com
Onde você encontrou os comparativos de performances ?
--
Rafael de Paula Souza

Sublimus - Desenvolvimento de Software e Soluções Web.
www.sublimus.com.br

Mesias

unread,
Jan 12, 2011, 4:40:38 PM1/12/11
to jav...@googlegroups.com
meu comparativo de performance foi simplismente o tempo de listagem da mesma entidade e mesma quantidade de elementos. A diferença foi de 1 para 20. Contei o tempo com System.currenttimemilis().

2011/1/12 Rafael de Paula Souza <rafae...@gmail.com>

Rafael de Paula Souza

unread,
Jan 12, 2011, 9:09:08 PM1/12/11
to jav...@googlegroups.com
Mesias, acho interessante tu procurar comparação mais "científica".

Digo isso, pois a comparação, da forma que tu fez, não é um bom parâmetro. É só olhar para a diferença que você citou (1 para 20) por mais que o Hibernate fosse pior que o EclipseLink essa diferença é grande demais.

Em uma busca rápida no google encontrei essa comparação:

http://terrazadearavaca.blogspot.com/2008/12/jpa-implementations-comparison.html

Não cheguei a ler tudo, mas pelo que eu vi foram utilizados métodos mais confiáveis na comparação.


--
Rafael de Paula Souza

Sublimus - Desenvolvimento de Software e Soluções Web.
www.sublimus.com.br




alecindro

unread,
Jan 12, 2011, 10:20:27 PM1/12/11
to jav...@googlegroups.com
Rafael, interessante essa comparação apresentada.
 
Eu não quiz entrar antes na discussão pois os testes que eu tinha feito porque existe muitos se inflamam com sabores.
Mas pelo próprio site que você nos enviou, podemos perceber que o EclipseLink é melhor para consultas (20%) e ocupa uma quantidade muito menor de memória (-50%) em comparação  ao Hibernate.
O Hibernate é muito melhor na inserção (450%) do que o Eclipselink.
Como na maioria dos sistemas Web que participei 90% do uso se dá em queries (consultas), sempre procurei optar por EclipseLink.
 
Att,
 
Alecindro

Rafael de Paula Souza

unread,
Jan 12, 2011, 11:11:24 PM1/12/11
to jav...@googlegroups.com
Alecindro,

Eu também nem entrei no mérito de qual tem a melhor performance, até porque ainda não vi muitas comparações nem fiz testes. Mas estranhei quando foi mencionado que a performance do EclipseLink e extremamente superior a do Hibernate e fiquei interessado em saber como foram feitas essas comparações.


--
Rafael de Paula Souza

Sublimus - Desenvolvimento de Software e Soluções Web.
www.sublimus.com.br




Mesias

unread,
Jan 13, 2011, 7:19:46 AM1/13/11
to disc...@cejug.java.net, pb...@googlegroups.com, jav...@googlegroups.com
O que decidimos foi de usar o EclipseLink. Migrar para o Hibernate pareceu bem simples, já que usam os mesmos objetos do JPA2. O que vão fazer é manter uma versão (branch) em paralelo com o Hibernate, prá checar se o sistema em funcionamento daria maiores problemas, por enquanto tudo é muito novo.

O que realmente aconteceu é que são muitas entidades Eager, e essas entidades Eager tem outras também, isso gerou um numero excessivo de consultas e o Hibernate não otimizou as consultas, chega a fazer Select na mesma tabela diversas vezes.

Mas o mais impressionante foi que os testes que fizemos com possíveis problemas com Lasy Exception nos 2 frameworks foi que o EclipseLink não deu a excessão fechando o EntityManager antes do Jsf ler as entidades em Lazy, já o Hibernate deu excessão.

Agora tenho outra discussão a respeito do EclipseLink, se vale a pena usar open-session-in-view nele.

Ps.: Quem citou esta pesquisa, eu já tinha visto antes. Como o que estou fazendo é ERP, Selects são mais importantes que Inserts no meu caso, há pouco processamento de grandes números de Inserts.
http://terrazadearavaca.blogspot.com/2008/12/jpa-implementations-comparison.html

2011/1/13 Rafael de Paula Souza <rafae...@gmail.com>

Ed Pichler

unread,
Jan 13, 2011, 7:25:11 AM1/13/11
to jav...@googlegroups.com, disc...@cejug.java.net, pb...@googlegroups.com
O Eclipse Link é top de linha. é o TopLink que foi doado pela Oracle. O código fonte dele é muito mais estruturado, e a maneira de usar bem mais organizada.
Eu sou fãzasso do Hibernate, e foi uma das coisas mais legais que aconteceu quando eu comecei com Java, mas indo para o mundo componententizado do OSGi comecei usar o eclipse link e parece até ter mais recursos que o Hibernate.

Com o padrão JPA, fica fácil a transição entre esses dois e até outros frameworks de persistências.

Nota: EclipseLink é o único que suporta arquitetura OSGi.

Ed Pichler

unread,
Jan 13, 2011, 7:26:33 AM1/13/11
to jav...@googlegroups.com
Concordo, deve haver alguma configuração adicional no hibernate, que no eclipse link estaria como padrão.
Os dois usam JDBC, e seguem o mesmo conceito, e possuem fonte aberto. Impossível haver tanta divergência.

Mesias

unread,
Jan 13, 2011, 7:43:51 AM1/13/11
to jav...@googlegroups.com, disc...@cejug.java.net, pb...@googlegroups.com
Pichier, você tem mais material a respeito de OSGI ? sei que a pergunta é inocente mas, dá para usar OSGI no Tomcat ? ou funciona apenas com EJB (GlassFish e Cia) ?

2011/1/13 Ed Pichler <eduardo...@gmail.com>

--
Você recebeu esta mensagem por que é membro do Javasf
http://groups.google.com/group/javasf
 
Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil

Luiz

unread,
Jan 13, 2011, 10:44:00 AM1/13/11
to jav...@googlegroups.com
Em 13/01/2011 10:43, Mesias escreveu:
>> Nota: EclipseLink � o �nico que suporta arquitetura OSGi.
sobre osgi
estou querendo montar um grupo sobre rcp
alguem participaria?
Reply all
Reply to author
Forward
0 new messages