Java Persistence/Persistence Products

From Wikibooks, open books for an open world
Jump to: navigation, search

There are many persistence products to choose from. Most persistence products now support a JPA interface, although there still are some exceptions. Which product you use depends on your preference, but most people would recommend you use the JPA standard whichever product you choose. This gives you the flexibility to switch persistence providers, or port your application to another server platform which may use a different persistence provider.

Determining which persistence product to use involves many criteria. Valid things to consider include:

  • Which persistence product does your server platform support and integrate with?
  • What is the cost of the product, is it free and open source, can you purchase enterprise level support and services?
  • Do you have an existing relationship with the company producing the product?
  • Is the product active and does it have a large user base?
  • How does the product perform and scale?
  • Does the product integrate with your database platform?
  • Does the product have active and open forums, do questions receive useful responses?
  • Is the product JPA compliant, what functionality does the product offer beyond the JPA specification?

Existing Persistence Products[edit]

The following table summarises existing persistence products.[1]

Product JPA 1.0 JPA 2.0 JPA 2.1 JPA 2.2 JDO 2.0 JDO 3.0 CMP 2.1 Version Year of Last Release Open Source Application Servers[2]
Hibernate (Red Hat) Yes Yes Yes
Yes JBoss AS/Wildfly
EclipseLink (Eclipse) Yes Yes Yes Yes
Yes Oracle Weblogic (12c), Glassfish (v3)
TopLink (Oracle) Yes Yes Yes
12c (12.1.3)
Oracle Weblogic (12c), OracleAS (10.1.3)
OpenJPA (Apache) Yes Yes
Yes Geronimo, WebSphere Application Server (8.0)
DataNucleus (DataNucleus) Yes Yes Yes Yes Yes Yes
TopLink Essentials ( Yes
Yes Glassfish (v2), SunAS (9), OracleAS (10.1.3)
Kodo (Oracle) Yes Yes
Oracle WebLogic (10.3)
  1. Last updated 2016-07-05
  2. Application server that includes the product as their JPA implementation