Understanding JDBC Drivers: Types and Their Role in Java