##はじめに
社外研修で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の構成は以下。
##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操作を行う際に使用する。
####接続処理の実装
/**
*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();
}
}
}