Java Persistence/Persistence Products
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
editThe 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] | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
ObjectDB (ObjectDB Software) | Yes | Yes | Yes | Yes | Yes | |||||||
Hibernate (Red Hat) | Yes | Yes | Yes | Yes | Yes | JBoss AS/Wildfly | ||||||
EclipseLink (Eclipse) | Yes | Yes | Yes | Yes | Yes | Oracle Weblogic (12c), Glassfish (v3) | ||||||
TopLink (Oracle) | Yes | Yes | Yes | 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 | Yes | |||||
TopLink Essentials (java.net) | Yes | Yes | Glassfish (v2), SunAS (9), OracleAS (10.1.3) | |||||||||
Kodo (Oracle) | Yes | Yes | Oracle WebLogic (10.3) |