This section documents the JDBC extensions that Derby implements for J2EE compliance. (For more details about these extensions, see http://java.sun.com/products/jdbc/jdbc20.stdext.javadoc/javax/sql/package-summary.html).
Derby's implementation of DataSource means that it supports JNDI; as a resource manager, it allows a database to be named and registered within a JNDI server. This allows the calling application to access the database by a name (as a data source) instead of through a database connection URL.
Establishing a connection to the database can be a relatively expensive operation in client/server environments. Establishing the connection once and then using the same connection for multiple requests can dramatically improve the performance of a database.
The Derby implementation of ConnectionPoolDataSource and PooledConnection allows a connection pool server to maintain a set of such connections to the resource manager (Derby). In an embedded environment, connections are much cheaper and connection pooling is not necessary.
An XAConnection produces an XAResource, and, over its lifetime, many Connections. It allows for distributed transactions.
An XADataSource is simply a ConnectionPoolDataSource that produces XAConnections.
In addition, Derby provides three methods for XADataSource, DataSource, and ConnectionPoolDataSource. Derby supports a number of additional data source properties:
Sets a property to create a database at the next connection. The string argument must be "create".
Sets a property to shut down a database. Shuts down the database at the next connection. The string argument must be "shutdown".