Amit
Amit

Reputation: 34725

Java Persistence API

I am new to Java Persistence API. I have just learnt it and now want to use it in my Java Desktop Application. But I have the following questions regarding it:

Q1. Which JPA implementation is smallest in size (as I want to have my application's size as small as possible)?

Q2. How to find the value of the <provider> tag in the persistence.xml file. I know that its value is vendor specific but I couldn't find the value for the JPA implementation downloaded from here.

Upvotes: 6

Views: 4284

Answers (3)

Pascal Thivent
Pascal Thivent

Reputation: 570285

Q1. Which JPA implementation is smallest in size (as I want to have my application's size as small as possible)?

For JPA 1.0:

  • Hibernate Entity Manager 3.4.0.GA: ~4.9MB
  • EclipseLink 1.1.3: ~4.7MB
  • OpenJPA 1.2.2: ~2.7MB (I'm not sure for this one, not tested for now so I may be missing some jars)

I would stay away from TopLink Essentials.

For JPA 2.0:

  • DataNucleus 2.0.3: ~3.7MB
  • EclipseLink 1.2 and 2.0+: ~4.8MB
  • Hibernate Entity Manager 3.5.0-Final: ~5.8MB
  • OpenJPA 2.0.0-beta3: not measured (still in beta)

These measures have been done on my pet project (including dependencies except the JDBC driver). Personally, I wouldn't base my choice on the size only, even for a desktop app.

Q2. How to find the value of the tag in the persistence.xml file.

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

Upvotes: 5

DataNucleus
DataNucleus

Reputation: 15577

You mean size in memory ? or size of jar ? Size in memory depends on how many classes are being persisted, the metadata for them, how many EntityManagers open, what is in the L1/L2 caches. I know that DataNucleus uses less memory than Hibernate since users themselves have reported that, no idea against the other primary implementations.

Size of a jar is a pointless measure of anything, since the majority of things there may not be in use.

PS. DataNucleus is also a JPA1+2 implementation

Upvotes: 0

lexicore
lexicore

Reputation: 43651

Q1. VERY rough calculated:

  • Hibernate (versions around 3.4.0.GA) with deps is 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. Open the JAR, check the META-INF/services/javax.persistence.spi.PersistenceProvider file.

Upvotes: 2

Related Questions