JDBC- Implementation of interfaces

In JDBC you first register a driver by calling

Class.forName('classname')

which loads the Database class and registers that class with DriverManager

When you say DriverManager.getConnection() – It returns you java.sql.Connection (the contract as per specification)

Which class implements these methods?

The actual implementation is provided by the database vendor, for e.g. Oracle, MySQL.

Why it is called as connection object instead of implemented class
object?

Because you code to Interface and not implementation (good coding practice).

If you want you can look up in the vendor jar and find which class implements Connection then instead of

Connection connection = DriverManager.getConnection()

you can write

VendorConnectionImpl vendorConnection = (VendorConnectionImpl)DriverManager.getConnection()

This above will work but then it will bind you with that specific implementation.

If you want to move from vendor1 to vendor2 you cannot do that, first you will have to change the above code as per vendor2 API, But if you use the first approach you can move from Vendor to Vendor without having pain of changing your code.

Leave a Comment