# Classes that pertain to resource managers

Derby provides two variants of each DataSource interface defined by the JDBC API.

Applications that run on the J2SE 1.4 or 1.5 platform must use the first variant. Applications that run on the Java SE 6 platform can use either of the two variants. However, the DataSource methods specific to the JDBC 4 API are available only from the second variant (the one whose class name ends with "40").

If an application is running on the Java SE 6 platform, all connection objects returned from the DataSource will be JDBC 4 connection objects, regardless of which DataSource variant is in use.

The Derby implementation classes for the DataSource interfaces are as follows:

- org.apache.derby.jdbc.EmbeddedDataSource and org.apache.derby.jdbc.EmbeddedDataSource40

  Implements the javax.sql.DataSource interface, which a JNDI server can reference. Typically this is the object that you work with as a DataSource.

- org.apache.derby.jdbc.EmbeddedConnectionPoolDataSource and org.apache.derby.jdbc.EmbeddedConnectionPoolDataSource40

  Implements the javax.sql.ConnectionPoolDataSource interface. A factory for PooledConnection objects.

- org.apache.derby.jdbc.EmbeddedXADataSource and org.apache.derby.jdbc.EmbeddedXADataSource40

  Derby's implementation of the javax.sql.XADataSource interface.

See the javadoc for each class for more information.

Parent topic: Using Derby as a J2EE resource manager
Related concepts
Getting a DataSource
Shutting down or creating a database