To store, organize, and retrieve data, most applications use relational databases. Java EE applications access relational databases through the JDBC API. Before an application can access a database, it must get a connection.
At runtime, here’s what happens when an application connects to a database:
The application gets the JDBC resource (data source) associated with the database by making a call through the JNDI API.
Given the resource’s JNDI name, the naming and directory service locates the JDBC resource. Each JDBC resource specifies a connection pool.
Via the JDBC resource, the application gets a database connection.
Behind the scenes, the application server retrieves a physical connection from the connection pool that corresponds to the database. The pool defines connection attributes such as the database name (URL), user name, and password.
Now that it’s connected to the database, the application can read, modify, and add data to the database.
The applications access the database by making calls to the JDBC API. The JDBC driver translates the application’s JDBC calls into the protocol of the database server.
When it’s finished accessing the database, the application closes the connection.
The application server returns the connection to the connection pool. Once it’s back in the pool, the connection is available for the next application.