2010-04-01 7 views
5

Je suis nouveau à Java Persistence API. Je viens de l'apprendre et je veux maintenant l'utiliser dans mon application de bureau Java. Mais j'ai les questions suivantes à ce sujet:Java Persistence API

Q1. Quelle implémentation de JPA est la plus petite en taille (comme je veux avoir la taille de ma demande aussi petite que possible)?

Q2. Comment trouver la valeur de la balise <provider> dans le fichier persistence.xml. Je sais que sa valeur est spécifique au fournisseur, mais je n'ai pas trouvé la valeur de l'implémentation JPA téléchargée à partir de here.

+2

Question intéressante (Q1). –

+1

Cela étant fait référence n'est pas une * implémentation * de JPA. C'est simplement le JAR API jar (des interfaces) et est requis par toutes les implémentations. – DataNucleus

Répondre

5

Q1. Quelle implémentation de JPA est la plus petite en taille (comme je veux avoir la taille de ma demande aussi petite que possible)?

Pour JPA 1.0:

  • Hibernate Entity Manager 3.4.0.GA: ~ 4.9MB
  • EclipseLink 1.1.3: ~ 4.7MB
  • OpenJPA 1.2.2: ~ 2.7MB (Je ne suis pas sûr pour celui-ci, pas testé pour l'instant, donc il me manque peut-être quelques pots)

Je voudrais rester loin de TopLink Essentials.

Pour JPA 2.0:

  • DataNucleus 2.0.3: ~ 3.7MB
  • EclipseLink 1.2 et 2.0+: ~ 4.8MB
  • Hibernate Entity Manager 3.5.0-finale: ~
  • 5.8MB
  • OpenJPA 2.0.0-beta3: non mesurée (encore en version bêta)

Ces mesures ont été faites sur mon projet d'animaux (y compris les dépendances à l'exception du pilote JDBC). Personnellement, je ne baserais pas mon choix uniquement sur la taille, même pour une application de bureau.

Q2. Comment trouver la valeur de la balise dans le fichier persistence.xml.

  • DataNucleus: org.datanucleus.jpa.PersistenceProviderImpl
  • EclipseLink: org.eclipse.persistence.jpa.PersistenceProvider
  • Mise en veille prolongée: org.hibernate.ejb.HibernatePersistence
  • OpenJPA: org.apache.openjpa.persistence.PersistenceProviderImpl
  • TopLink Essentials: oracle.toplink.essentials.PersistenceProvider
+0

Ok ... quelle implémentation choisiriez-vous quelle que soit la taille? –

+0

J'étais sur le point de partir avec TopLink Essentials. Pourquoi resteriez-vous loin de ça? –

+0

@Yatendra Parce qu'il ne se passe rien avec Toplink Essentials (il est maintenu mais mort), car il nécessite un tissage, parce que j'ai toujours eu du mal à utiliser (peut-être pas si pénible avec 5 entités) . Mais ça fonctionne. –

2

Q1. TRÈS grossier calculé:

  • Hibernate (versions autour de 3.4.0.GA) avec desps est ca. 3,6 Mb.
  • TopLink Essentials (2.0.1-04) ca. 2,4 Mb.
  • EclipseLink (ex: TopLink) (1.1.3-M1) ca. 4,7 Mb.

Q2. Ouvrez le fichier JAR, vérifiez le fichier META-INF/services/javax.persistence.spi.PersistenceProvider.

+0

L'implémentation JPA (glassfish-persistence-api-b32g) dont le lien que j'ai fourni dans ma question n'a que 50KB. Mais il n'a pas de dossier 'services' dans le dossier META-INF. –

+0

C'est l'API, pas la mise en œuvre. Pour autant que je sache, GlassFish utilise EclipseLink comme RI. – lexicore

+0

@BalusC Souhaitez-vous faire un commentaire sur 'glassfish-persistence-api-b32g' Implémentation JPA. J'ai été attiré vers lui en raison de sa taille la plus basse (50KB). –

0

Vous voulez dire la taille en mémoire? ou la taille du pot? La taille en mémoire dépend du nombre de classes qui sont conservées, de leurs métadonnées, du nombre d'EntityManagers ouverts, de ce qui se trouve dans les caches L1/L2. Je sais que DataNucleus utilise moins de mémoire qu'Hibernate puisque les utilisateurs eux-mêmes l'ont signalé, aucune idée contre les autres implémentations principales.

La taille d'un pot est une mesure inutile de n'importe quoi, puisque la majorité des choses peuvent ne pas être utilisées.

PS. DataNucleus est également une implémentation JPA1 + 2