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

From: Lew <noone(at)lewscanon(dot)com>
To: pgsql-jdbc(at)postgresql(dot)org
Subject: Re: O/T: Class.forName(driver) repeatedly? [Was: JDBC parameter binding not working for PL/PGSQL block JDBC3 Version 9.0-801]
Date: 2011-04-27 21:39:23
Message-ID: ipa2ds$p4b$1@news.albasani.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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

In response to

Responses

Browse pgsql-jdbc by date

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