Senhores,
Qual é melhor Hibernate ou EJB?
Senhores,
Qual é melhor Hibernate ou EJB?
Depende da aplicação e se você se refere ao EJB 3, claro.
[]'s
Acho que não existe uma comparação, cada um desempenha um papel diferente na aplicação.
Senhores,Qual é melhor Hibernate ou EJB?
Você quis dizer se num projeto utilizando EJB, para a parte de persistência é melhor utilizar Hibernate ou os Entity Beans do EJB ?
Se estiver usando, é EJB2 ou EJB3 ?
[]´s
Pois é … na verdade eu estava querendo confirmar uma informação… pelo o que eu sei… antes eram extremos diferentes Hibernate e EJB… respectivamente persistência e distribuição de componentes, mais o EJB3 agora tem também o mapeamento de classes persistentes com tabélas do banco. Confirmam?.
Na verdade antes existia um tipo de EJB (Entity Beans), que faziam ORM.
Hoje existe o JPA, que não depende de uma estrutura EJB, e sim é implementado baseado em POJOS como o hibernate faz.
Até.
JPA é uma especificação a parte… você não precisa de EJB para usar JPA.
O hibernate tem uma implementação da JPA, o Hibernate Entity Manager.
Vale lembrar que você consegue usar hibernate com anotações, igual ao JPA. Eu ainda prefiro usar o Hibernate devido a API de criteria.
Na verdade, o EJB 3 Persistence API, conhecido por JPA, é muito bom e rápido. Utiliza o framework da Oracle TopLink e tem algumas vantagem ao meu ver em relação ao Hibernate atual:
Menos arquivos a serem utilizados;
Maior velocidade na resposta;
Faz parte diretamente do Java EE 5.
Sempre usei o Hibernate, mas ultimamente estou preferindo o JPA. Sei que o Hibernate possui algumas características que o JPA ainda não possui. Mas ainda assim, gostei da velocidade da resposta das aplicações feitas onde trabalho com JPA em relação ao utilizado anteriormente com Hibernate.
Na verdade, o EJB 3 Persistence API, conhecido por JPA, é muito bom e rápido. Utiliza o framework da Oracle TopLink e tem algumas vantagem ao meu ver em relação ao Hibernate atual:Menos arquivos a serem utilizados; Maior velocidade na resposta; Faz parte diretamente do Java EE 5.Sempre usei o Hibernate, mas ultimamente estou preferindo o JPA. Sei que o Hibernate possui algumas características que o JPA ainda não possui. Mas ainda assim, gostei da velocidade da resposta das aplicações feitas onde trabalho com JPA em relação ao utilizado anteriormente com Hibernate.
Ola, poderia me tirar uma duvida?
O hibernate já não implementa JPA? Ou seja, se você está utilizando Hibernate, não estaria também por tabela usando JPA?
Obrigado
Ola, poderia me tirar uma duvida?
O hibernate já não implementa JPA? Ou seja, se você está utilizando Hibernate, não estaria também por tabela usando JPA?
Obrigado[/quote]
Exatamente como você disse, o hibernate implementa, mas não é nativo dele. Essa adição do JPA ao Hibernate apenas o deixou maior em termos de arquivos (mais arquivos a serem adicionados a lib e obviamente carregados), mas não melhor e nem mais rápido do que o TopLink. Entenda que não estou apenas dizendo sobre o TopLink Essentials, que é um produto sem todas as características do TopLink, que a Oracle doou a comunidade Eclipse.
Compare você mesmo o tempo de resposta do Hibernate VS TopLink.
[]'s
ajaxinaction, você está confundindo “bife à milanesa” com “bife ali na mesa”…
A JPA (Java Persistence API e não EJB 3 Persistence API) é uma especificação da Sun.
Tanto o Hibernate, quanto o TopLink são implementações que seguem esta especificação. TopLink não é “nativo” do JPA…
Na verdade, a especificação do JPA se baseou, e muito, nas funcionalidades do próprio Hibernate. Ponto a favor para o hibernate.
Já o TopLink é da Oracle, portanto, não é free. Ponto contra o TopLink.
Alguns teste demonstram o TopLink um pouco mais rápido, mas isso pode ser relativo…
Quanto à dúvida inicial do nosso amigo, considerando EJB 3, a JPA é parte da sua especificação e não exclui a utilização do Hibernate, já que o Hibernate implementa a JPA. Pessoalmente, eu vejo vantagens na utilização do Hibernate.
ajaxinaction, você está confundindo “bife à milanesa” com “bife ali na mesa”…A JPA (Java Persistence API e não EJB 3 Persistence API) é uma especificação da Sun.
Tanto o Hibernate, quanto o TopLink são implementações que seguem esta especificação. TopLink não é “nativo” do JPA…
Na verdade, a especificação do JPA se baseou, e muito, nas funcionalidades do próprio Hibernate. Ponto a favor para o hibernate.
Já o TopLink é da Oracle, portanto, não é free. Ponto contra o TopLink.
Alguns teste demonstram o TopLink um pouco mais rápido, mas isso pode ser relativo…
Quanto à dúvida inicial do nosso amigo, considerando EJB 3, a JPA é parte da sua especificação e não exclui a utilização do Hibernate, já que o Hibernate implementa a JPA. Pessoalmente, eu vejo vantagens na utilização do Hibernate.
Amigo, acho que você não está por dentro dos assuntos. Pesquise no site da Oracle, blz?
Um pouco mais rápido, qto? Não em testes de Mock que num vale, to falando de aplicações grande e reais. A diferença é considerável.
E sim, as especificações JPA são especificações tão e somente. Mas que foram adicionadas em JAR separado ao Hibernate, correto? Mais um arquivinho pra ele.
[]'s
Esqueci de outro detalhe, a Sun não adotou o Hibernate, mas sim o TopLink Essentials, correto?
Alguns links pro pessoal se atualizar:
http://www.onjava.com/pub/a/onjava/2006/05/17/standardizing-with-ejb3-java-persistence-api.html
Um livro para aprender mais:
Doação da Oracle a fundação Eclipse:
http://oss.oracle.com/oracle-eclipse-projects.html
[]'s
O TopLink Essentials é simplesmente a implementação de referência da JPA e até onde sei implementações de referência não são “confiáveis” o suficiente para serem utilizadas em produção. Já o produto TopLink da Oracle não é open-source e é pago, ou estou errado?
Quanto à questão da performance, eu gostaria que me passasse dados concretos, se possível. Se o que está argumentando realmente tiver fundamento eu posso até mudar minha opinião.
Não entendi a colocação… pode ser mais claro? Pesquisar o que no site da Oracle… Lá irão me dizer, por exemplo, que o OC4J é uma maravilha… e aí?
O TopLink Essentials é simplesmente a implementação de referência da JPA e até onde sei implementações de referência não são “confiáveis” o suficiente para serem utilizadas em produção. Já o produto TopLink da Oracle não é open-source e é pago, ou estou errado?Quanto à questão da performance, eu gostaria que me passasse dados concretos, se possível. Se o que está argumentando realmente tiver fundamento eu posso até mudar minha opinião.
Não entendi a colocação… pode ser mais claro? Pesquisar o que no site da Oracle… Lá irão me dizer, por exemplo, que o OC4J é uma maravilha… e aí?
Opa, num quero fazer FlameWar aqui,
.
O link que passei é para ver a doação do TopLink mesmo, não o Essentials, para a fundação Eclipse. Antes era pago e tu está certo. Mais isso mudou recentemente.
Aqui em uma aplicação que tenho rodando no cliente, refiz uma parte de um sistema, onde o Hibernate lê mais de um milhão de linhas em uma tacada só. A velocidade disso não me lembro mais, tenho que ver os relatórios que não estão em minhas mãos agora, mas só me lembro que o ganho de performance em resposta chegou a 3/4 do tempo em relação do Hibernate. O banco de dados é Oracle, mas fizemos o teste no MySQL 5 e PostgreSQL, o que apresentou uma performance 1/4 maior, confirmando a excelência do ORM.
ajaxinaction,
A questão que perguntei sobre performance foi curiosidade mesmo… no momento trabalho justamente com a otimização de consultas complexas em hibernate, num sistema realmente grande - e temos conseguido resultados fantásticos. A otimização de frameworks ORM muitas vezes se torna algo não muito trivial de se fazer.
Estamos também avaliando a possibilidade de utilizar JPA, mas a utilização do TopLink em si realmente não me cheira bem… sempre que Oracle, IBM, e afins dizem que vão doar alguma coisa, não sei porque, mas fico com o pé atrás… cachorro mordido de cobra tem medo de linguiça.
mas tudo bem, já estamos desvirtuando muito o tópico original… rs. :lol: