A Database and Application Server Support

This appendix describes the database platforms and application servers supported by EclipseLink.

This appendix includes the following sections:

A.1 Database Support

EclipseLink supports any relational database that is compliant with SQL and has a compliant JDBC driver. EclipseLink has extended support for several database platforms. The extended support mainly consists of providing native sequencing support, schema creation, and certain database functions.

The databases in Table A-1 are supported. The Java classes are in the org.eclipse.persistence.platform.database package and are described in Java API Reference for Oracle TopLink.

Table A-1 Supported Database Platforms

Database Java Class Features

Apache Derby

org.eclipse.persistence.platform.database.DerbyPlatform

Provides Derby-specific behavior.

Attunity

org.eclipse.persistence.platform.database.AttunityPlatform

Platform class that works with Attunity's Connect JDBC driver.

dBASE

org.eclipse.persistence.platform.database.DBasePlatform

Provides dBASE-specific behavior, including:

  • Writes Time and Timestamp as strings (dBASE does not support Times or Timestamps)

Firebird

org.eclipse.persistence.platform.database.FirebirdPlatform

Provides Firebird-specific behavior.

H2

org.eclipse.persistence.platform.database.H2Platform

Provides H2-specific behavior.

HyperSQL DataBase (HSQL)

org.eclipse.persistence.platform.database.HSQLPlatform

Provides HSQL-specific behavior. Supports HSQL functionality as of 1.8.1. Features include:

  • DDL creation

  • IDENTITY sequencing

  • SEQUENCE objects

  • Functions

  • Pagination

IBM Cloudscape

org.eclipse.persistence.platform.database.CloudscapePlatform

Provides CloudScape DBMS-specific behavior.

IBM DB2 Mainframe

org.eclipse.persistence.platform.database.DB2MainframePlatform

Provides DB2 Mainframe-specific behavior. This provides for some additional compatibility in certain DB2 versions on OS390. Features include:

  • Specialized CONCAT syntax

IBM DB2

org.eclipse.persistence.platform.database.DB2Platform

Provides DB2-specific behavior, including:

  • Schema creation

  • Native SQL for byte[], Date, Time, and Timestamp

  • Table qualified names.

  • Stored procedures

  • Temporary tables

  • Casting

  • Database functions

  • Identity sequencing

  • SEQUENCE sequencing

IBM Informix

org.eclipse.persistence.platform.database.InformixPlatform

Provides Informix-specific behavior, including:

  • Types for schema creation.

  • Native sequencing using @SERIAL.

Microsoft Access

org.eclipse.persistence.platform.database.AccessPlatformPlatform

Provides Microsoft Access-specific behavior.

Microsoft SQLServer

org.eclipse.persistence.platform.database.SQLServerPlatform

Provides Microsoft SQL Server-specific behavior, including:

  • Native SQL for byte[], Date, Time, and Timestamp.

  • Native sequencing using @IDENTITY.

MySQL

org.eclipse.persistence.platform.database.MySQLPlatform

Provides MySQL-specific behavior, including:

  • Native SQL for Date, Time, and Timestamp

  • Native sequencing

  • Mapping of class types to database types for the schema framework

  • Pessimistic locking

  • Platform specific operators

Oracle

org.eclipse.persistence.platform.database.OraclePlatform

Provides Oracle Database-specific behavior, including:

  • LOB

  • NChar

  • XMLType

  • TIMESTAMP (TZ, LTZ)

  • Native batch writing

  • Structured object-relational data-types

  • PLSQL datatypes and stored procedures

  • VPD, RAC, proxy authentication

  • XDK XML parser

  • Hierarchical selects (Select by prior)

  • Returning clause

  • Flashback history and queries

  • Stored procedures, output parameters and output cursors

  • Stored functions

  • Oracle AQ

Oracle JavaDB

org.eclipse.persistence.platform.database.JavaDBPlatform

Allows the use of JavaDBPlatform as a synonym for DerbyPlatform.

Oracle TimesTen

org.eclipse.persistence.platform.database.TimesTenPlatform

Provides Oracle TimesTen database-specific behavior.

Oracle TimesTen7

org.eclipse.persistence.platform.database.TimesTen7Platform

Provides Oracle TimesTen 7 database-specific behavior.

PervasivePlatform

org.eclipse.persistence.platform.database.PervasivePlatform

Provides Pervasive PSQL-specific behavior.

PointBase

org.eclipse.persistence.platform.database.PointBasePlatform

Provides PointBase database-specific behavior.

PostgreSQL

org.eclipse.persistence.platform.database.PostgreSQLPlatform

Provides PostgreSQL database-specific behavior, including:

  • Native SQL for Date, Time, and Timestamp

  • Native sequencing

  • Mapping of class types to database types for the schema framework

  • Pessimistic locking

  • Platform specific operators

  • LIMIT/OFFSET query syntax for select statements

See also PostgreSQL: http://wiki.eclipse.org/EclipseLink/FAQ/JPA/PostgreSQL

SAP MaxDB

org.eclipse.persistence.platform.database.MaxDBPlatform

Provides MaxDB database-specific behavior.

SAP SyBase SQLAnywhere

org.eclipse.persistence.platform.database.SQLAnywherePlatform

Provides SQL Anywhere-specific behavior.

Sybase

org.eclipse.persistence.platform.database.SybasePlatform

Provides Sybase-specific behavior, including:

  • Native SQL for byte[], Date, Time, and Timestamp

  • Native sequencing using @IDENTITY

Fujitsu Symfoware

org.eclipse.persistence.platform.database.SymfowarePlatform

Provides Symfoware-specific behavior, including:

  • DDL Generation

  • Outer Join

  • Subquery (with limitations)

  • Stored Procedure Calls

  • Stored Procedure Generation

  • Native Sequences/Identifier fields

  • JPA Bulk Update/Delete (with limitations)

  • Batch Reading

  • Batch Writing

  • Pessimistic Locking (with limitations)

  • First Result/Limit (with limitations)

  • Expression Framework (with limitations)

  • Delimiters

  • Auto Detection


It also possible to extend EclipseLink to add extended support for additional platforms. There are also several user-contributed platforms in the EclipseLink incubator project. See Platform Incubator:

http://wiki.eclipse.org/EclipseLink/Development/Incubator/Platform

A.2 Application Server Support

EclipseLink can be used with any Java EE application server that meets the software requirements through the EclipseLink API.

Table A-2 lists the application servers for which EclipseLink provides integration support. The classes listed in the table are concrete subclasses of the EclipseLink org.eclipse.persistence.platform.server.ServerPlatformBase class, which is responsible for representing server-specific behavior. These classes determine the following behavior for the server:

  • Which external transaction controller to use

  • Whether to enable JTA (external transaction control)

  • How to register or unregister for runtime services (JMX or MBean)

  • Whether to enable runtime services

  • How to launch container Threads

For more information on the Java classes listed in the table, see Java API Reference for Oracle TopLink.

Table A-2 Supported Application Servers

Server Name Java Classes

IBM WebSphere Application Server

  • org.eclipse.persistence.platform.server.was.WebSphere_6_1_Platform

  • org.eclipse.persistence.platform.server.was.WebSphere_7_Platform

  • org.eclipse.persistence.platform.server.was.WebSpherePlatform

JBoss Application Server

  • org.eclipse.persistence.platform.server.jboss.JBossPlatform

Oracle Containers for J2EE (OC4J)

  • org.eclipse.persistence.platform.server.oc4j.Oc4jPlatform

Oracle Sun Application Server

  • org.eclipse.persistence.platform.server.sunas

Oracle WebLogic Server

  • org.eclipse.persistence.platform.server.wls.WebLogic_10_Platform

  • org.eclipse.persistence.platform.server.wls.WebLogic_9_Platform

  • org.eclipse.persistence.platform.server.wls.WebLogicPlatform

SAP NetWeaver Application Server

  • org.eclipse.persistence.platform.server.sap.SAPNetWeaver_7_1_Platform


A.2.1 EclipseLink MOXy as the JAXB Provider for Application Servers

EclipseLink MOXy is integrated into the GlassFish and WebLogic application servers as the JAXB provider. For more information, see the following links:

A.3 Non-SQL Standard Database Support: NoSQL

EclipseLink JPA can be used with NoSQL databases. A Java class can be mapped to a NoSQL datasource using the @NoSQL annotation or <no-sql> XML element.

EclipseLink also provides JPA access to EIS (Enterprise Information Systems) such as legacy databases and systems (CICS, ADA, VSAM, IMS, MQ, AQ).

EclipseLink's NoSQL support allows complex hierarchical data to be mapped, including XML, indexed, and hierarchical mapped data such as JSON data. CRUD operations, embedded objects and collections, inheritance, and relationships are supported. A subset of JPQL and the Criteria API are supported, dependent on the NoSQL database's query support.

It is also possible to add support for other NoSQL data-sources by defining your own EISPlatform subclass and JCA adapter. There are also several user-contributed platforms in the EclipseLink incubator project. See "Platform Incubator" at this URL:

http://wiki.eclipse.org/EclipseLink/Development/Incubator/Platform

Table A-3 lists the NoSQL and EIS data-sources that are supported by EclipseLink. For more information on the Java classes listed in the table, see Java API Reference for Oracle TopLink.

Table A-3 Supported NoSQL and EIS Platforms

Data-source Java Class Features

MongoDB

org.eclipse.persistence.nosql.adapters.mongo.MongoPlatform

Provides MongoDB support including:

  • MAPPED JSON data

  • JPQL and Criteria queries

  • Native queries

  • hints for READ_PREFERENCE, WRITE_CONCERN, OPTIONS, SKIP, LIMIT, BATCH_SIZE

Oracle NoSQL

org.eclipse.persistence.nosql.adapters.nosql.OracleNoSQLPlatform

Provides Oracle NoSQL support including:

  • MAPPED key/value data

  • XML data

  • find() and SELECT all queries

  • hints for CONSISTENCY, DURABILITY, TIMEOUT, VERSION

XML files

org.eclipse.persistence.eis.adapters.xmlfile.XMLFilePlatform

Provides support for persistence to XML file including:

  • XML data

  • find() and SELECT all queries

  • XPath interactions

JMS

org.eclipse.persistence.eis.adapters.jms.JMSPlatform

Provides support for persistence through JMS messaging:

  • XML data

  • send/receive operations

Oracle AQ

org.eclipse.persistence.eis.adapters.aq.AQPlatform

Provides support for persistence through Oracle AQ messaging:

  • XML data

  • enqueue/dequeue operations