web-dev-qa-db-fra.com

Quel fournisseur doit être utilisé pour l'implémentation Java Persistence API (JPA)

Je souhaite utiliser le Java API de persistance (JPA) pour mon application Web.

Il existe des implémentations JPA populaires comme Hibernate, Toplink et EclipseLink. Quelle mise en œuvre est un bon choix et pourquoi?

25
Dimitri Dewaele

Lorsque l'API Java Persistence (API) a été développée, elle est devenue très populaire. JPA décrit la gestion des données relationnelles dans les applications utilisant Java.

JPA (Java Persistence API) est une interface à implémenter pour les fournisseurs de persistance.

Hibernate est l'une de ces implémentations de JPA. Lorsque vous utilisez Hibernate avec JPA, vous utilisez en fait l'implémentation Hibernate JPA.

JPA définit généralement les métadonnées via des annotations dans la classe Java. Alternativement via XML ou une combinaison des deux. Une configuration XML écrase les annotations.

Implémentations JPA:

  • Hibernate : le plus avancé et le plus utilisé. Faites attention au chemin de classe car de nombreuses bibliothèques sont utilisées, en particulier lorsque vous utilisez JBoss. Prend en charge JPA 2.1.
  • Toplink : prend uniquement en charge les spécifications JPA de base. (Il s'agissait de la version gratuite d'Oracle de l'implémentation JPA)
  • EclipseLink : est basé sur TopLink et est le chemin prévu pour la persistance d'Oracle et TopLink. Prend en charge JPA 2.1
  • Apache OpenJPA : Meilleure documentation mais semble très boguée. Implémentation open source pour JPA. Prend en charge JPA 2.0
  • DataNucleus : bien documenté, open source (licence Apache 2), est également un fournisseur JDO. Prend en charge JPA 2.1
  • ObjectDB : bien documenté
  • CMobileCom JPA : implémentation JPA 2.1 légère pour les deux Java et Android.

Les autres approches sont:

  • Plain JDBC
  • ORM avec Hibernate: Hibernate soutient désormais également JPA
  • iBatis: Le projet a été déplacé vers MyBatis ( link )
  • JDO

Motivation pour Hibernate comme mon choix JPA:

  • Projet mature:
    • Le plus avancé
    • Bien documenté
  • Sous-projets Hibernate utiles
    • Outils Hibernate: génération automatique de code et génération de base de données
    • Validation Hibernate: capacités de spécification du bean. S'intègre à JPA2
    • Recherche en veille prolongée: puissante recherche en texte intégral sur les objets du domaine
  • Communauté active
    • Grande communauté de développement
    • Largement utilisé

Hibernate est devenu une implémentation open source de JPA très rapidement après la publication de la spécification finale. Il dispose d'un riche ensemble de fonctionnalités et génère rapidement de nouvelles fonctionnalités, car un processus de développement open source a tendance à être plus rapide qu'un processus de communauté Java.

53
Dimitri Dewaele