Hibernate-orm-overview
Hibernate-ORMの概要
JDBCとは
JDBCは Java Database Connectivity の略です。 JavaプログラムからリレーショナルデータベースにアクセスするためのJava APIのセットを提供します。 これらのJava APIにより、JavaプログラムはSQLステートメントを実行し、SQL準拠のデータベースと対話できます。
JDBCは、さまざまなプラットフォームで実行でき、修正なしでさまざまなDBMSと対話できるデータベースに依存しないアプリケーションを作成するための柔軟なアーキテクチャを提供します。
JDBCの長所と短所
Pros of JDBC | Cons of JDBC |
---|---|
Clean and simple SQL processing 大きなデータで良好なパフォーマンス 小規模なアプリケーションに非常に適しています 習得が簡単なシンプルな構文 a |
大規模プロジェクトで使用される場合は複雑 大きなプログラミングオーバーヘッド カプセル化なし 実装が難しい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つの不一致の問題が発生します。
Sr.No. | Mismatch & Description |
---|---|
1 |
Granularity オブジェクトモデルには、データベース内の対応するテーブルの数よりも多くのクラスがある場合があります。 |
2 |
Inheritance RDBMSは、オブジェクト指向プログラミング言語の自然なパラダイムである継承に似たものを定義しません。 |
3 |
Identity RDBMSは、「同一性」という1つの概念、つまり主キーを正確に定義します。 ただし、Javaは、オブジェクトの同一性(a == b)とオブジェクトの同等性(a.equals(b))の両方を定義します。 |
4 |
Associations オブジェクト指向言語は、オブジェクト参照を使用して関連付けを表しますが、RDBMSは外部キー列として関連付けを表します。 |
5 |
Navigation JavaとRDBMSでオブジェクトにアクセスする方法は根本的に異なります。 |
- O * bject-* R elational M * apping(ORM)は、上記のすべてのインピーダンス不整合を処理するソリューションです。
ORMとは何ですか?
ORMは* O * bject-* R elational M * apping(ORM)の略で、リレーショナルデータベースとJava、C#などのオブジェクト指向プログラミング言語との間でデータを変換するためのプログラミング手法です。
ORMシステムには、プレーンJDBCよりも次の利点があります-
Sr.No. | Advantages |
---|---|
1 | Let’s business code access objects rather than DB tables. |
2 | Hides details of SQL queries from OO logic. |
3 | Based on JDBC 'under the hood.' |
4 | No need to deal with the database implementation. |
5 | Entities based on business concepts rather than database structure. |
6 | Transaction management and automatic key generation. |
7 | Fast development of application. |
ORMソリューションは、次の4つのエンティティで構成されています-
Sr.No. | Solutions |
---|---|
1 | An API to perform basic CRUD operations on objects of persistent classes. |
2 | A language or API to specify queries that refer to classes and properties of classes. |
3 | A configurable facility for specifying mapping metadata. |
4 | A technique to interact with transactional objects to perform dirty checking, lazy association fetching, and other optimization functions. |
Java ORMフレームワーク
Javaには、いくつかの永続的なフレームワークとORMオプションがあります。 永続フレームワークは、オブジェクトをリレーショナルデータベースに格納および取得するORMサービスです。
- エンタープライズJavaBeanエンティティBean
- Javaデータオブジェクト
- キャスター
- TopLink
- 春のDAO
- 休止状態
- などなど