Java学習 jsp/Servletとデータベースについての学習
jsp/Servletの学習をたくさんの人に助けてもらいながら続けています。
いよいよデータベース連携だ!!となったのですが、色々と新しい言葉が登場したため、noteと物理的なノート両方にまとめたいと思います。
[JDBC]
Java Database Connectivity(直訳:Javaのデータベースの接続性)のことです。
JDBCAPIとドライバがあります。
MySQLならMySQLの、H2DBならH2DBのJDBCドライバを入れてJDBCAPI越しに操作をしているイメージ。
使用するデータベースが何であっても、JDBCAPIを通して使うので同じように使うことができます。
[DriverManagerとDataSource]
DBに接続するには、java.sql.Connectionクラスのインスタンスを取得する必要があります。
DriverManagerで書くと、
Class.forName("JDBCのクラス名");
Connection con = DriverManager.getConnection
("接続文字列" , "userID" , "password");
※JDBCのクラス名は使用しているJDBCドライバのもの。
のように、わりとわかりやすくかけるのですが、DBへのアクセスに使う情報をソースコードにまるまる書いてしまう事、変更がかかった際全部のソースを変更する必要があるというデメリットがあります。
また、DBに接続しSQLを発行した後必ずデータベースから切断してConnectionオブジェクトを破棄する必要があります。
操作の度に接続→破棄を繰り返すのは、パフォーマンスが悪い(らしいです)ので現在はDataSourceの方でつないだ方がいいのでは?と言われています。
DataSourceのメリットは引用文に書いてあるのですが、ソースに直接接続情報を書かなくて良いので管理が楽、コネクションプールの仕組みを使えるのでパフォーマンスが上がります。ということ(らしい)です。
[コネクションプールとは?]
コネクションを複数保持(プーリング)している状態を保つこと。
システムによるようですが、どこかのタイミング(起動やリソースへのアクセス)でコネクションを複数保持しておき、システム終了のタイミングまで保持し続ける。
DBにアクセスするとき、プログラムは自動的にコネクションプールの中のコネクションの1つを使い、操作終了後コネクションをコネクションプールに戻します。
(接続→切断を繰り返さず、接続を再利用する。)
疑問点としては、コネクションプールはつまるところ繋ぎっぱなしな状態のコネクションを複数用意することなのかな?という点ですね。
この点について調べると、データベース←1→データプロバイダ←2→プログラムの2の部分だけがプログラムによって閉じられる部分だよという説明がありました。データプロバイダだけはデータベースへのアクセスを保持し続けて、プログラムはデータプロバイダに許可をもらえばすぐアクセスできるということでしょうか。
[ResultSetクラスのnext()メソッド]
これはデータベースというより、ある特定のメソッドの特徴ですね。
次の行を見ているのと同時にカーソルをあてているらしい。
ちなみにデータベースにおけるカーソルとは、
データベースにおけるカーソル(Cursor)は、一連のデータに順にアクセスする際の検索条件および「現在位置」を保持するデータ要素である。
以上、本格的な掲示板作成に入る前にまとめてみました。
間違っている部分もあるかもしれませんが、深まったと思います。
この記事が気に入ったらサポートをしてみませんか?