2010-04-01 9 views
5

Soy nuevo en Java Persistence API. Acabo de aprenderlo y ahora quiero usarlo en mi aplicación Java Desktop. Pero tengo las siguientes preguntas al respecto:Java Persistence API

Q1. ¿Qué implementación de JPA es más pequeña en tamaño (ya que quiero que el tamaño de mi aplicación sea lo más pequeño posible)?

Q2. Cómo encontrar el valor de la etiqueta <provider> en el archivo persistence.xml. Sé que su valor es específico del proveedor, pero no pude encontrar el valor para la implementación de JPA descargada desde here.

+2

Interesante pregunta (Q1). –

+1

A lo que se hace referencia NO es una * implementación * de JPA. Es simplemente el JPA API jar (de interfaces) y es requerido por todas las implementaciones. – DataNucleus

Respuesta

5

Q1. ¿Qué implementación de JPA es más pequeña en tamaño (ya que quiero que el tamaño de mi aplicación sea lo más pequeño posible)?

Para JPA 1.0:

  • hibernación del gestor de entidades 3.4.0.GA: ~ 4.9MB
  • EclipseLink 1.1.3: ~ 4.7MB
  • OpenJPA 1.2.2: ~ 2.7MB (No estoy seguro de esto, no ha sido probado por ahora, así que me pueden faltar algunas jarras)

Me mantendría alejado de TopLink Essentials.

Para JPA 2.0:

  • DataNucleus 2.0.3: ~ 3.7MB
  • EclipseLink 1.2 y 2.0 +: ~ 4.8MB
  • Hibernate entidad gestora 3.5.0-final: ~ 5.8MB
  • OpenJPA 2.0.0-beta3: no medido (todavía en fase beta)

Estas medidas se han realizado sobre mi proyecto personal (incluyendo dependencias excepto el controlador JDBC). Personalmente, no basaría mi elección solo en el tamaño, incluso para una aplicación de escritorio.

Q2. Cómo encontrar el valor de la etiqueta en el archivo persistence.xml

  • DataNucleus: org.datanucleus.jpa.PersistenceProviderImpl
  • EclipseLink: org.eclipse.persistence.jpa.PersistenceProvider
  • Hibernate: org.hibernate.ejb.HibernatePersistence
  • OpenJPA: org.apache.openjpa.persistence.PersistenceProviderImpl
  • TopLink Esencial: oracle.toplink.essentials.PersistenceProvider
+0

Ok ... ¿qué implementación elegiría independientemente del tamaño? –

+0

Estaba a punto de irme con TopLink Essentials. ¿Por qué te mantienes alejado de eso? –

+0

@Yatendra porque nada sucede con Toplink Essentials (se mantiene pero muerto), porque requiere de tejido, porque necesita usar javaagent, porque siempre me ha resultado doloroso de usar (aunque puede que no sea tan doloroso con 5 entidades) . Pero funciona. –

2

Q1. Muy áspera calculado:

  • Hibernate (versiones alrededor 3.4.0.GA) con deps es ca. 3.6 Mb.
  • TopLink Essentials (2.0.1-04) ca. 2.4 Mb.
  • EclipseLink (por ejemplo, TopLink) (1.1.3-M1) ca. 4.7 Mb.

Q2. Abra el JAR, verifique el archivo META-INF/services/javax.persistence.spi.PersistenceProvider.

+0

La imlementación de JPA (glassfish-persistence-api-b32g) cuyo enlace he proporcionado en mi pregunta tiene solo 50 KB de tamaño. Pero no tiene ninguna carpeta 'services' en la carpeta' META-INF'. –

+0

Es API, no implementación. Hasta donde yo sé, GlassFish usa EclipseLink como RI. – lexicore

+0

@BalusC ¿Desea opinar sobre la implementación de 'JPA 'glassfish-persistence-api-b32g'. Me he sentido atraído por su tamaño más bajo (50 KB). –

0

¿Quiere decir tamaño en la memoria? o el tamaño de la jarra? El tamaño en la memoria depende de cuántas clases se conservan, los metadatos para ellas, cuántos administradores de entidades se abren, qué hay en las cachés L1/L2. Sé que DataNucleus usa menos memoria que Hibernate ya que los mismos usuarios informaron eso, ninguna idea contra las otras implementaciones primarias.

El tamaño de un frasco es una medida inútil de cualquier cosa, ya que la mayoría de las cosas pueden no estar en uso.

PS. DataNucleus también es una implementación de JPA1 + 2