ITエンジニアの成長ブログ

ITエンジニアとして行う勉強の発信&日々の生活で体験した楽しいことをゆるく発信

Javaでデータベース接続時のおまじない「Class.forName()」はもう不要だった

今更な内容でお恥ずかしいのですが、JDBCでコネクション取得するときに「おまじない」として記載する「Class.forName()」が現在では既に不要になっていたことを最近知りました。

このおまじないである「Class.forName()」は、データベースのコネクションを取得する前に記述しておく必要があるものでした。以下のような感じですね。

Class.forName("org.hsqldb.jdbcDriver");
Connection con = DriverManager.getConnection(
  "jdbc:hsqldb:hsql://localhost", "sa", "");


現在では、「Class.forName()」の記述は不要になっていて、いきなりDriverManagerでコネクションを取得することができます。以下の記述のみでOKということですね。

Connection con = DriverManager.getConnection(
  "jdbc:hsqldb:hsql://localhost", "sa", "");


この、「おまじない」の記述に関してぐぐると「Class.forName()」はJDK1.6から不要になったということです。DriverManagerがコネクション取得時に良い感じにしてくれるようになったみたいです。

また、ドキュメントを見る限りは「Class.forName()」の記述はいらなくなったけど、削除しなくても問題ないらしいです。つまり、互換性を考えてソース変更なしでも動くようになっているようですね(まあ書いても意味がないものは削除するべきですが)。

しかし、私自身Java7くらいからJavaを勉強し始めた気がするのですが、このことを知りませんでした。。この業界にいると、今回のような「おまじない」をよく見かけることがありますが、その記述の意味はある程度理解しておくべきだなと思いました。

でも、最近ではフレームワークとか使っていると今回のようにJDBCを直接触ってデータベースにアクセスすることはほぼないですよね。。念のため頭の片隅に覚えておきます。

今回はこの辺で。最後までお読みいただきありがとうございました。