LoginSignup
2
3

More than 3 years have passed since last update.

JDBC 基礎①(DBへの接続・切断) まとめ 備忘録

Last updated at Posted at 2019-10-14

はじめに

社外研修でJDBCの内容に入ったので自分の備忘録にまとめます。
環境は以下です。

説明
言語 Java8
DB OracleDB 11g
APPサーバ Tomcat
JDBC ojdbc7
IDE Eclipse Mars

JDBCとは

DBのレコードとJavaのオブジェクトを紐づける標準API。

APIとは・・・
「ソフトウェアの機能を共有するためのプログラム」のこと。

JDBCにより、レコード内の各列の値をJavaのオブジェクトに格納して、Javaプログラム内で
利用できるようになる。

JDBC自体は、インターフェース。
JDBCの各機能を利用するには、RDBMSの種類に応じたJDBCドライバ(JDBC実装クラス)が別途必要!!

JDBCの構成は以下。

jdbcmodel.png

DBへの接続・切断

DBへの接続手順

DBへの接続は以下の手順で行う。

1.libフォルダにJDBCドライバの格納
2.ビルドパスへJDBCドライバの追加
3.JVMへJDBCドライバクラスの登録
4.DB接続処理の実行

※DBの接続、操作の処理を実装する際には、以下の処理もソースコードに記述する。

・例外処理(SQLException)
 JDBCでDB接続、SQL実行などを行うメソッドでエラーが発生した場合、SQLExceptionが送出される。

・DBとの接続切断処理
 DB接続やSQL操作が完了したら、必ず接続切断を実施する。
 システム停止など致命的なトラブルが発生する恐れがあるため。
 Connection#close()メソッドで実行。

1、2は割愛。
ただ、入れるだけなので。

3.JVMへJDBCドライバクラスの登録

DB接続処理のメソッドを呼び出すためには、そのメソッドが実装されているJDBCドライバクラスを
JVMに登録する必要がある。

登録するには、Class#forName()メソッドを利用する

Class#forName()

引数にJDBCドライバクラス名を指定する。
引数に指定されたクラスをJVMへ登録する。
引数に指定されたクラスが存在しない場合、
ClassNotFoundExceptionを例外クラスで送出

オラクルであれば以下。
oracle.jdbc.driver.OracleDriver

登録は一度実行すれば、JVMが終了するまでは再登録不要。
例外処理を記述する必要あり。

4.DB接続処理の実行

DBへ接続する際は、DriverManager#getConnection()メソッドを利用。

DriverManager#getConnection()

引数を3つ指定可能
第1引数:接続するDBのURL(ホスト名、ポート番号、DB名)
第2引数:接続するためのユーザ名
第3引数:接続するためのパスワード

接続成功でConnection型のオブジェクトが戻り値として返される。
Connection自体hインターフェースであり、その型の変数はConnectionインターフェースを実装した
クラスのオブジェクトを参照している。
このオブジェクトは、DBとの接続情報を保管しており、DBにSQL操作を行う際に使用する。

接続処理の実装

DBManager.java

/**
 *DBと接続
 *
 *@return DBコネクション
 *@throws ClassNotFundException
 *        ドライバクラスが見つからない場合
 *@throws SQLException
 *        DB接続に失敗した場合
 */

  public static Connection getConnection() throws ClassNotFoundException,
           SQLException {
    //JDBCドライバクラスをJVMに登録
    Class.forName("JDBCドライバクラス名");

    //DBに接続
    Connection connection = DriverManager.getConnection("URL", "ユーザ名", "パスワード");

    return connection;
  }

/**
 *DBの接続切断
 *
 *@param connection
 *       DBとの接続情報
 */

  public static void close(Connection connection) {
    if (connection != null) {
        try {
            //DB接続切断
            connection.close();
            } catch (SQLException e) {
               e.printStackTrace();
            }
        }
    }

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3