Pergunta

Eu fiz uso dos seguintes implementações JPA:

  1. Hibernate,
  2. Toplink,
  3. OpenJPA

Cada um deles tem suas próprias forças e fraquezas. Eu encontrei Hibernate o mais avançado dos três, exceto que ele misturou algumas de suas próprias melhorias com JPA que tornou difícil para mudar para outros fornecedores. Mais importante ainda, o seu analisador de consulta era muito mais branda ao interpretar JPA. Eles torná-lo um pouco difícil de obter as bibliotecas corretas para hibernação suporte porque eu achei uma missão a tentar obter as versões corretas de todas as dependências.

Toplink foi ok, mas fica-se com a sensação de que ele é um pouco aleijado como parece a Oracle quer que você use / buy? a sua biblioteca mais avançada. Tentando baixá-lo também foi uma missão porque você precisa instalá-lo via executando um arquivo jar. Eu achei que ele implementado apenas a especificação de base JPA. A razão que eu usei era de hibernação usa um monte de bibliotecas que são comumente usados ??em outros projetos de código aberto que seria de muitas vezes ter problemas classloarder, especialmente ao usar JBoss

OpenJPA - Isto tem, de longe, a melhor documentação e é fácil de download e uso, mas parece é muito buggy. Talvez seja apenas o meu código, mas o código que eu encontrei uso mais avançado, como relacionamentos OneToMany com CascadeType.ALL conjunto simplesmente não parecem funcionar. É certo Pode ser meu código que estava errado e eu não tive tempo para testar um caso limpo, mas muitos incidentes como este licença assustou-me a usá-lo. Eu realmente espero que fique melhor. Suas mensagens de erro são muitas vezes inúteis para ajudar a resolver o problema.

O que outras bibliotecas têm as pessoas usadas e quais as que eles preferem e por quê?

Foi útil?

Solução

Eu tive as mesmas conclusões sobre essas implementações.

  1. OpenJPA foi / parecia carrinho

  2. Hibernate tinha toneladas de bibliotecas e parecia ter problemas com não preguiçoso carregamento tudo.

  3. Toplink acabou como a minha escolha. Não era tão flexível como Hibernate teria sido, mas ele funciona e eu não ter de instalar commons-logging .

O que eu gostaria de tentar na próxima é JPOX, que foi recentemente renomeado para DataNucleus .

Outras dicas

Pessoalmente não me sinto OpenJPA é maduro o suficiente ainda. Há outras bibliotecas de código aberto que são mais maduros e prefiro usá-los. Estes são os que eu iria considerar em ordem:

  1. Hibernate. Hibernate tem sido em torno de um longo tempo e tem realmente abriu o caminho para ORM em Java. O único problema que tenho com o Hibernate é o licenciamento. É LGPL licenciado que pode causar algumas empresas comerciais a contorcer-se (por razões que eu não vou entrar em aqui). Enfim, se LGPL é um problema para você, é provavelmente bom para orientar clara.

  2. EclipseLink. Algumas informações sobre EclipseLink. Toplink Essentials foi a versão livre de sua implementação JPA da Oracle. EclipseLink foi tomada a partir Toplink, implementação JPA soprado completo de Oracle. EclipseLink vai ser o provedor de JPA 2.0 para Glassfish v3.0 então parece que tudo está se afastando de Toplink Essentials e EclipseLink. Embora a versão EclipseLink só é 1.0.2, o produto tem sido em torno de um longo tempo sob outros nomes.

Um projeto que estou trabalhando é sobre Toplink Essentials agora, mas nós planejamos mudar para EclipseLink em breve. Hibernate estava fora para os problemas de licenciamento que mencionei anteriormente.

OpenJPA é conhecido como Kodo, que é o BEA comprado bastante há muito tempo. Kodo estava implementação de JDO e agora JPA. Além disso, usamos OpenJPA bastante intensa. Assim, eu teriamos querido dizer que ele não está madura. É bom No entanto gostaria de sugerir para usar o Hibernate, ou seja, embalagens de APP em torno Hibernate.

Razão? 1) APP é muito, muito semelhante ao de hibernação 2) Muitos postos de trabalho tem exigência Hibernate. É melhor se inclinar para produtos mainstream ... basicamente

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top