Hibernate-ORMの概要
JDBCとは何ですか?
JDBCは Java Database Connectivity。これは、JavaプログラムからリレーショナルデータベースにアクセスするためのJavaAPIのセットを提供します。これらのJavaAPIを使用すると、JavaプログラムでSQLステートメントを実行し、SQL準拠のデータベースと対話できます。
JDBCは、さまざまなプラットフォームで実行でき、変更なしでさまざまなDBMSと対話できる、データベースに依存しないアプリケーションを作成するための柔軟なアーキテクチャを提供します。
JDBCの長所と短所
JDBCの長所 | JDBCの短所 |
---|---|
クリーンでシンプルなSQL処理 大量のデータで良好なパフォーマンス 小さなアプリケーションに非常に適しています シンプルな構文なので習得が簡単 |
大規模なプロジェクトで使用する場合は複雑 大きなプログラミングオーバーヘッド カプセル化なし MVCの概念を実装するのは難しい クエリはDBMS固有です |
なぜオブジェクトリレーショナルマッピング(ORM)なのか?
オブジェクト指向システムを使用する場合、オブジェクトモデルとリレーショナルデータベースの間に不一致があります。RDBMSはデータを表形式で表しますが、JavaやC#などのオブジェクト指向言語はデータをオブジェクトの相互接続されたグラフとして表します。
適切なコンストラクタと関連するパブリック関数を持つ次のJavaクラスを検討してください-
public class Employee {
private int id;
private String first_name;
private String last_name;
private int salary;
public Employee() {}
public Employee(String fname, String lname, int salary) {
this.first_name = fname;
this.last_name = lname;
this.salary = salary;
}
public int getId() {
return id;
}
public String getFirstName() {
return first_name;
}
public String getLastName() {
return last_name;
}
public int getSalary() {
return salary;
}
}
上記のオブジェクトが次のRDBMSテーブルに格納および取得されることを考慮してください-
create table EMPLOYEE (
id INT NOT NULL auto_increment,
first_name VARCHAR(20) default NULL,
last_name VARCHAR(20) default NULL,
salary INT default NULL,
PRIMARY KEY (id)
);
最初の問題は、数ページまたはアプリケーションを開発した後でデータベースの設計を変更する必要がある場合はどうなるでしょうか。次に、オブジェクトをリレーショナルデータベースにロードして保存すると、次の5つの不一致の問題が発生します。
シニア番号 | 不一致と説明 |
---|---|
1 | Granularity データベース内の対応するテーブルの数よりも多くのクラスを持つオブジェクトモデルがある場合があります。 |
2 | Inheritance RDBMSは、オブジェクト指向プログラミング言語の自然なパラダイムである継承に似たものを定義していません。 |
3 | Identity RDBMSは、「同一性」の概念を1つだけ定義します。それは主キーです。ただし、Javaは、オブジェクトの同一性(a == b)とオブジェクトの同等性(a.equals(b))の両方を定義します。 |
4 | Associations オブジェクト指向言語はオブジェクト参照を使用して関連付けを表しますが、RDBMSは関連付けを外部キー列として表します。 |
5 | Navigation JavaとRDBMSでオブジェクトにアクセスする方法は根本的に異なります。 |
ザ・ Object-Relational Mapping(ORM)は、上記のすべてのインピーダンス不整合を処理するためのソリューションです。
ORMとは何ですか?
ORMは Object-Relational Mapping(ORM)は、リレーショナルデータベースとJava、C#などのオブジェクト指向プログラミング言語との間でデータを変換するためのプログラミング手法です。
ORMシステムには、プレーンJDBCに比べて次の利点があります。
シニア番号 | 利点 |
---|---|
1 | DBテーブルではなくオブジェクトにアクセスするビジネスコードを見てみましょう。 |
2 | SQLクエリの詳細をオブジェクト指向ロジックから非表示にします。 |
3 | 「内部のJDBC」に基づいています。 |
4 | データベースの実装に対処する必要はありません。 |
5 | データベース構造ではなく、ビジネスコンセプトに基づくエンティティ。 |
6 | トランザクション管理と自動キー生成。 |
7 | アプリケーションの迅速な開発。 |
ORMソリューションは、次の4つのエンティティで構成されています-
シニア番号 | ソリューション |
---|---|
1 | 永続クラスのオブジェクトに対して基本的なCRUD操作を実行するためのAPI。 |
2 | クラスおよびクラスのプロパティを参照するクエリを指定するための言語またはAPI。 |
3 | マッピングメタデータを指定するための構成可能な機能。 |
4 | トランザクションオブジェクトと対話して、ダーティチェック、レイジーアソシエーションフェッチ、およびその他の最適化機能を実行する手法。 |
JavaORMフレームワーク
Javaにはいくつかの永続的なフレームワークとORMオプションがあります。永続フレームワークは、オブジェクトをリレーショナルデータベースに格納および取得するORMサービスです。
- エンタープライズJavaBeansエンティティBean
- Javaデータオブジェクト
- Castor
- TopLink
- 春のDAO
- Hibernate
- などなど