アプリケーションが扱っている、メモリ中のデータは電源を切ると消失してしまうため、不揮発性の媒体(HDD,SSDなど)に保存する必要がある。
独自形式でファイルとして保存することもできるが、開発効率、パフォーマンス、拡張性などの理由で実績のあるデータベースサーバを利用するのが普通となっている。
データベースの機能を提供する「サーバ」、機能を利用する「クライアント」の2つの役割がある。
データベースサーバは通常、独立した別のプロセスとして実行されており(別のコンピュータ上かもしれない)、
クライアントプログラムはサーバに「接続」し、命令とデータを「通信」することにより、データベースの機能が利用される。
データを表(テーブル)とその関連(リレーション)で表す。
RDBは、業務データの設計と親和性や操作のしやすさ、処理速度、認知度などから現状最も普及している。
Oracle、MSSQL Server、MySQL、PostgreSQL、SQLite 等が有名であり、よく使用されている。
「データベース」という場合、(文脈にもよるが)ほぼRDBのことを指すことが多い。RDB以外のデータベースも数多く存在する。
RDBにおいて、データベースを操作するために使用される言語。
データベースの構造を定義するための命令や、中のデータを操作するCRUD(Create/Read/Update/Delete)処理のための命令が存在する。その文法に従い複雑な命令も構築でき、発行された命令は、データベースサーバ内で高速に実行される。
Javaプログラム中ではただの「文字列」であり、実行時にその文字列をデータベースサーバに送って初めて内容が実行される。つまり、文法や型に誤りがあるなどしてSQLとして間違っていても、Javaプログラムのコンパイル時にはエラーとして検出されず、実行時になるまで不具合が判明しない(しかも特定の条件のみ発生するケースも多い)。他の部分にも増してテストが重要である。
業務アプリケーションで使用されるデータの性質上、データのテーブルは下記の2つのタイプに分類できることが多い(当てはまらないケースも存在する)。便宜上の分類であり、データベースサーバ上でのテーブルの扱いが異なるわけではない。
台帳と呼ばれるような種類のデータが登録される。
運用の一環として、必要に応じてデータのメンテナンスを行うことも多く、アプリケーションにマスター管理処理を用意することも多い。
顧客情報テーブル、商品テーブル、支社テーブルなど
取引や処理ごとに追加されていく種類のデータ。日々増え続けていくことになる。明細となる子トランザクションテーブルを持つことも多い。
売り上げテーブル、日報テーブルなど
Javaからデータベースに接続するための古くからある、標準的なデータベース接続方式。
データベースサーバごとにJDBCドライバのライブラリが存在するので、それを取得・参照し、プログラム中から使用する。
インターフェースは共通なので、異なるデータベースサーバでも同じ方法で接続できる。
(が、接続の際のパラメータは異なり、結局サーバ固有のSQLの方言もあるので完全に同じには扱えない)