# javax.sql: JDBC interfaces

Derby implements a number of JDBC interfaces for Java EE compliance.

For more details about these interfaces, see the API documentation for your version of the Java Development Kit, which you can find at http://docs.oracle.com/javase/.

- javax.sql.DataSource

  An interface that is a factory for connections to the physical data source that the object represents. An object that implements the DataSource interface will typically be registered with a naming service based on the Java Naming and Directory (JNDI) API. The org.apache.derby.jdbc DataSource classes support the JNDI API, with the exception of the DataSource classes that support Java SE 8 Compact Profile 2. See DataSource classes and JDBC support for Java SE 8 Compact Profiles for more information.

- javax.sql.ConnectionPoolDataSource and javax.sql.PooledConnection

  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 the ConnectionPoolDataSource and PooledConnection interfaces 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.

- javax.sql.XAConnection

  An XAConnection produces an XAResource, and, over its lifetime, many Connections. This type of connection allows for distributed transactions.

- javax.sql.XADataSource

  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:

- setCreateDatabase(String create)

  Sets a property to create a database at the next connection. The string argument must be "create".

- setShutdownDatabase(String shutdown)

  Sets a property to shut down a database. Shuts down the database at the next connection. The string argument must be "shutdown".

Note: Set these properties before getting the connection.
Parent topic: Java EE compliance: Java Transaction API and javax.sql interfaces
Related reference
The JTA API