Java プログラミング言語のオブジェクト リレーショナル マッピング フレームワークである Hibernate ORM について学びましょう

目次

1. Hibernate ORM とは

2. Hibernate ORM の使用方法

3. Hibernate ORMのメリットと機能


 

1. Hibernate ORM とは

Hibernate は、Java アプリケーション内のオブジェクトをリレーショナル データベースに永続化するための、一般的なオープンソースのオブジェクト リレーショナル マッピング (ORM) フレームワークです。これにより、データベースのアクセスと操作を簡単かつ効率的に処理できるため、開発者はデータベースの詳細を気にせずにビジネス ロジックに集中できるようになります。この記事では Hibernate ORM について詳しく紹介します。

Hibernate ORM フレームワークは、2001 年に Gavin King らによって作成され、当時は「Hibernate Object/Relational Mapping」フレームワークと呼ばれていました。過去数年間で、Hibernate は、広く使用され、コミュニティのサポートのおかげで、最も人気のある ORM フレームワークの 1 つになりました。

Hibernate ORM フレームワークの主な機能は次のとおりです。

  1. オブジェクト リレーショナル マッピング: Hibernate は、Java オブジェクトをリレーショナル データベース テーブルに直接マッピングし、ORM テクノロジを通じてデータベース インタラクションを自動的に完了できます。これは、開発者が SQL ステートメントを作成する必要がなく、データベース テーブル構造の詳細を理解する必要もないことを意味します。

  2. データベース クエリ: Hibernate は、開発者がさまざまなデータベース クエリを簡単に実行できる豊富なクエリ API を提供します。これらのクエリは、HQL (Hibernate Query Language)、Criteria API、およびネイティブ SQL ステートメントを通じて実装できます。

  3. トランザクション管理: Hibernate はトランザクション管理をサポートしています。これにより、オブジェクトの作成、更新、削除時にすべてのデータベース操作がアトミック単位で実行されるようになります。これにより、データの整合性と一貫性が保証されます。

  4. キャッシュ管理: Hibernate は、開発者がデータベースとのやり取りの回数を減らし、アプリケーションのパフォーマンスを向上させるのに役立つキャッシュ メカニズムを提供します。Hibernate キャッシュには、簡単に構成およびカスタマイズできる 1 次キャッシュと 2 次キャッシュが含まれています。

  5. 透明性: Hibernate ORM フレームワークのもう 1 つの大きな利点は、その透明性です。これは、開発者が SQL ステートメントやデータベース テーブル構造を直接扱うことなく、Java オブジェクトを使用してプログラミングできることを意味します。Hibernate は Java オブジェクトをデータベースのテーブル構造に自動的にマップし、必要に応じて必要な変換を実行します。

以下は、Java オブジェクトをリレーショナル データベースに永続化する方法を示す、簡単な Hibernate ORM フレームワークの例です。

まず、Hibernate と JDBC ドライバーの依存関係をアプリケーションに追加する必要があります。Maven 依存関係の例を次に示します。

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>5.5.6.Final</version>
</dependency>

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.26</version>
</dependency>

次に、Hibernate の関連アノテーション (@Entity、@Column など) を使用して Java エンティティ クラスをマークし、それらをデータベース テーブルにマップする方法を指定できます。サンプルコードは次のとおりです。

@Entity
@Table(name = "users")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "username")
    private String username;

    @Column(name = "password")
    private String password;

    // getters and setters for all fields
}

この例では、User クラスには Hibernate エンティティ クラスであり、「users」という名前のデータベース テーブルにマップできることを示す @Entity アノテーションが付けられています。また、データベース テーブル フィールドにマップする方法を指定する、@Id、@GeneratedValue、および @Column として注釈が付けられた id、ユーザー名、およびパスワードのプロパティも含まれています。

最後に、Hibernate のセッション API を使用して、新しいユーザー レコードの挿入などのデータベース操作を実行できます。

 

2. Hibernate ORM の使用方法

Hibernate ORM は、Java で書かれた ORM (オブジェクト リレーショナル マッピング) フレームワークで、Java アプリケーション内のオブジェクトとリレーショナル データベースの間でマッピングする方法を提供します。Hibernate を使用すると、開発者はオブジェクト指向メソッドを使用してリレーショナル データベースを操作し、JDBC を直接使用するコードの量を減らすことができます。以下は、Hibernate ORM を使用して Java オブジェクトをリレーショナル データベース テーブルにマップする方法を示す簡単な Hibernate ORM の例です。

まず、必要な依存関係と構成ファイルを Web アプリケーションに追加する必要があります。Maven 上に構築された例を次に示します。

<dependency>
   <groupId>org.hibernate</groupId>
   <artifactId>hibernate-core</artifactId>
   <version>5.4.32.Final</version>
</dependency>

<dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
   <version>8.0.23</version>
</dependency>

次に、データベース内のテーブルを表す Person クラスなどの Hibernate エンティティ クラスを作成できます。サンプルコードは次のとおりです。

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class Person {

   @Id
   @GeneratedValue(strategy=GenerationType.IDENTITY)
   private int id;

   private String name;
   private int age;

   // getters and setters for id, name, and age

}

この例では、Person クラスには Hibernate エンティティ クラスであることを示す @Entity アノテーションが付けられています。これには、id、name、age の 3 つのフィールドと、対応する getter メソッドと setter メソッドが含まれます。id フィールドには @Id という注釈が付けられ、@GeneratedValue 戦略は IDENTITY として指定され、自動増加する主キーであることを示します。

最後に、Hibernate セッション ファクトリ オブジェクトを作成し、それを使用してデータベース テーブルを操作できます。サンプルコードは次のとおりです。

import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateUtil {

   private static SessionFactory sessionFactory = buildSessionFactory();

   private static SessionFactory buildSessionFactory() {
       try {
           Configuration configuration = new Configuration();
           configuration.configure("hibernate.cfg.xml");
           return configuration.buildSessionFactory();
       }
       catch (Throwable ex) {
           System.err.println("Initial SessionFactory creation failed." + ex);
           throw new ExceptionInInitializerError(ex);
       }
   }

   public static SessionFactory getSessionFactory() {
       return sessionFactory;
   }

   public static void shutdown() {
       getSessionFactory().close();
   }

}

この例では、HibernateUtil クラスに、hibernate.cfg.xml 構成ファイルを使用して Hibernate セッション ファクトリ オブジェクトを構築する buildSessionFactory() メソッドが含まれています。hibernate.cfg.xml ファイルには、データベース URL、ユーザー名、パスワードなど、データベースへの接続に関する情報が含まれています。getSessionFactory() メソッドは、アプリケーション全体で共有できる Hibernate セッション ファクトリ オブジェクトを返します。最後に、shutdown() メソッドは Hibernate セッション ファクトリ オブジェクトを閉じます。

上記の手順により、Hibernate ORM を使用して Java オブジェクトをリレーショナル データベース テーブルにマップし、操作を実行できるようになります。一般的な操作には、データの挿入、データのクエリ、データの更新、データの削除が含まれます。以下にサンプルコードを示します。

Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();

Person person = new Person();
person.setName("John");
person.setAge(25);

session.save(person);

session.getTransaction().commit();

このサンプル コードでは、新しい Person オブジェクトを作成し、その名前と年齢を設定し、Hibernate セッションを使用してデータベースに保存します。beginTransaction() メソッドはトランザクションを開始し、save() メソッドは Person オブジェクトをデータベースに保存し、getTransaction().commit() メソッドはトランザクションをコミットします。他の Hibernate メソッドを使用して、より複雑な操作を実行することもできます。

要約すると、Hibernate ORM は、Java アプリケーション内のオブジェクトとリレーショナル データベース間のマッピングを提供する ORM フレームワークです。Hibernate ORM を使用すると、開発者はオブジェクト指向のアプローチを使用してリレーショナル データベースを操作し、JDBC を直接使用するコードの量を減らすことができます。上記は Hibernate ORM の簡単な例で、Java オブジェクトをリレーショナル データベース テーブルにマップし、操作を実行する方法を示しています。

 

3. Hibernate ORMのメリットと機能

Hibernate ORM は、Java プログラミング言語のオブジェクト リレーショナル マッピング フレームワークであり、Java クラスをリレーショナル データベース テーブルにマップし、オブジェクト指向でデータベースを操作する方法を提供しますHibernate ORM には次の利点があります。

  1. データ永続性の簡素化: 従来の JDBC と比較して、Hibernate ORM はデータ永続性の多くの詳細を抽象化し、開発者が複雑な SQL ステートメントを手動で記述せずにデータ操作を実行できるようにします。

  2. 高度なカスタマイズ可能: Hibernate ORM はエンティティ間の完全な関係の確立を可能にし、継承とポリモーフィズムをサポートし、さまざまなビジネス ニーズを満たすさまざまな構成オプションも提供します。

  3. 透過性: Hibernate ORM を使用すると、開発者は基礎となるデータベースの詳細を気にすることなく、オブジェクト モデルに完全に依存できます。Hibernate ORM は、データベースからのデータの読み取りと書き込みを含む、すべてのデータ操作の処理を担当します。

  4. パフォーマンスの向上: Hibernate ORM はキャッシュ テクノロジを使用するため、データベース アクセスの数が減り、パフォーマンスが向上します。さらに、Hibernate ORM にはトランザクション管理機能もあり、データのセキュリティと整合性を確保できます。

  5. 移植性: Hibernate ORM は標準の Java Persistence API (JPA) に基づいて構築されており、他の JPA 実装と簡単に統合でき、異なるデータベース間でシームレスに切り替えることができます。

Hibernate ORM を使用する利点:

  1. 開発効率の向上: Hibernate ORM はデータ永続化の複雑さを簡素化し、開発者がビジネス ロジックをより迅速に実装できるようにします。

  2. エラーの削減: Hibernate ORM はタイプセーフなクエリメソッドを提供し、コンパイル時に構文エラーをチェックできるため、コードエラーが削減されます。

  3. アプリケーションのスケーラビリティの向上: Hibernate ORM を使用すると、開発者はデータ モデルとデータベース スキーマを簡単に変更でき、アプリケーションのスケーラビリティが向上します。

  4. コードの可読性の向上: Hibernate ORM はデータ操作にオブジェクト指向のアプローチを使用するため、コードの理解と保守が容易になります。

結論として、Hibernate ORM は、開発者がデータの永続性をより簡単に実現できるようにする非常に強力な ORM フレームワークです。その抽象化レベルは JDBC よりも高いため、データ永続化のプロセスが簡素化されます。高度にカスタマイズ可能で移植性があり、パフォーマンス上の利点があるため、大量のデータベース アクセスを処理する必要があるエンタープライズ レベルのアプリケーションに適しています。

 

おすすめ

転載: blog.csdn.net/2301_77899321/article/details/131423810