Re: O/T: Class.forName(driver) repeatedly? [Was: JDBC parameter binding not working for PL/PGSQL block JDBC3 Version 9.0-801] - Mailing list pgsql-jdbc

From Lew
Subject Re: O/T: Class.forName(driver) repeatedly? [Was: JDBC parameter binding not working for PL/PGSQL block JDBC3 Version 9.0-801]
Date
Msg-id ipa2ds$p4b$1@news.albasani.net
Whole thread Raw
In response to JDBC parameter binding not working for PL/PGSQL block JDBC3 Version 9.0-801  (Brady S Edwards <brady.s.edwards@seagate.com>)
Responses Re: O/T: Class.forName(driver) repeatedly? [Was: JDBC parameter binding not working for PL/PGSQL block JDBC3 Version 9.0-801]  (Brady S Edwards <brady.s.edwards@seagate.com>)
List pgsql-jdbc
Brady S Edwards wrote:
>         try {
>             System.out.println("Trying to connect");
>             Class.forName ("org.postgresql.Driver");
>             Properties props = new Properties();
>             props.setProperty("user", PG_USER);
>             props.setProperty("password", PG_PASS);
>                 Connection pgConn = DriverManager.getConnection(PG_CONN_PROP, props);
>             System.out.println("Looks like connections succeeded\n");
>             PreparedStatement pStmt = pgConn.prepareStatement(
>                 "INSERT INTO soo (zoo) values (?)");

This code makes me do a doubletake, and not just because of the ridiculously
wide TAB-based indentation.  Why reload the driver class over and over again?
  Only the first time does anything.

One might wish to take the Sun/Oracle advice:
"The DriverManager methods getConnection and getDrivers have been enhanced to
support the Java Standard Edition Service Provider mechanism. JDBC 4.0 Drivers
must include the file META-INF/services/java.sql.Driver. This file contains
the name of the JDBC drivers implementation of java.sql.Driver. For example,
to load the my.sql.Driver class, the META-INF/services/java.sql.Driver file
would contain the entry:

  my.sql.Driver

  [org.postgresql.Driver]

"Applications no longer need to explictly load JDBC drivers using
Class.forName(). Existing programs which currently load JDBC drivers using
Class.forName() will continue to work without modification."

You still don't need 'Class.forName()' more than once per driver if you stick
to the old way.

Personally I prefer JNDI-based approaches to loading DB drivers.  I also
usually prefer JPA to raw JDBC, but there are times when JDBC is
unquestionably the better tool.

--
Lew
Honi soit qui mal y pense.
http://upload.wikimedia.org/wikipedia/commons/c/cf/Friz.jpg

pgsql-jdbc by date:

Previous
From: Oliver Jowett
Date:
Subject: Re: JDBC parameter binding not working for PL/PGSQL block JDBC3 Version 9.0-801
Next
From: Brady S Edwards
Date:
Subject: Re: O/T: Class.forName(driver) repeatedly? [Was: JDBC parameter binding not working for PL/PGSQL block JDBC3 Version 9.0-801]