JDBC stands for Java Database Connectivity:
It is an API which gives easy connection to a wide range of databases. To connect to a database we have to load the appropriate driver and then request for a connection object. The Class.forName(....) will prepare the driver and register it with the DriverManager.
Class.forName("oracle.jdbc.driver.OracleDriver"); //dynamic class loading
String url = jdbc:oracle:thin:@hostname:1526:myDB;
Connection myConnection = DriverManager.getConnection(url, "username", "password");
The DataSource interface gives an alternative to the DriverManager for building a connection. DataSource builds the code more portable than DriverManager because it works with JNDI and it is prepared, managed and deployed separately from the application that uses it. If the DataSource location modifies, then there is no need to modify the code but change the configuration properties in the server. This gives your application code easier to maintain. DataSource allows the need of connection pooling and support for distributed transactions. A DataSource is not only a database but also may be a spreadsheet or a file. A DataSource object may be bound to JNDI and an application can find and use it to prepare a connection to the database. J2EE application servers give tools to describe your DataSource with a JNDI name. When the server initialize it loads all the DataSources into the application server's JNDI service.
DataSource configuration properties are given below:
1. JNDI Name jdbc/myDataSource
2. URL jdbc:oracle:thin:@hostname:1526:myDB
3. Password, serName
4. Implementation classname oracle.jdbc.pool.OracleConnectionPoolDataSource
5. Classpath ora_jdbc.jar
6. Connection pooling settings as illustrate maximum pool size, minimum pool size, connection timeout, statement cache size etc.
Once the DataSource has been set up, then you may get the connection object as given:
Context ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("jdbc/myDataSource"); Connection myConnection = ds.getConnection("username","password");