Hibernate は、アプリケーションのオブジェクトをリレーショナル データベースのテーブルにマッピングするために Java プロジェクトで広く使用されている ORM (オブジェクト リレーショナル マッピング) ツールです。
ORM は、プロジェクト内のクラスとデータベース内のエンティティ間のマッピングを容易にするツールです。
Hibernate のようなフレームワークを使用すると、開発者は永続化の詳細を気にすることなく、ドメインの開発に集中できます。
Hibernate の主な機能は次のとおりです:
1.データ アクセスの透明性: Hibernate により、開発者は永続性の詳細ではなくオブジェクトのみに焦点を当てた Java コードを作成できます
2.トランザクション サポート: Hibernate は統合されたトランザクション制御を提供し、さまざまなトランザクション マネージャーとの統合を容易にします。これにより、データの読み取りおよび書き込み操作が、データの整合性が保証された方法で実行されることが保証されます。
3.継承制御: Hibernate を使用すると、クラス間の継承をデータベースに柔軟にマッピングできます。次のようなさまざまな継承マッピング戦略があります。
単一テーブル戦略: 階層内のすべてのクラスに対して単一のテーブル。
結合テーブル戦略: 各具象クラスのテーブル。
クラスごとのテーブル戦略: 各クラスのテーブル。
4.遅延読み込み: Hibernate は遅延読み込みの概念をサポートしており、データのコレクションと関連付けは必要な場合にのみ読み込まれ、メモリ リソースが節約されます。
5.検証メカニズム: Hibernate は Bean Validation と統合されており、エンティティのフィールドの検証ルールをクラス アノテーションで直接定義できるようになります。
Hibernate は、Java で ORM を実装する方法を定義する標準仕様である JPA のいくつかの実装のうちの 1 つです。
このフレームワークは、Hibernate 自体がクエリを自動的に生成して実行するため、SQL および JDBC コードを削減するなど、いくつかの利点をもたらします。また、MySQL、PostgreSQL、MariaDB などの多くのリレーショナル データベースと互換性があります。キャッシュの使用と明確に定義されたトランザクションの制御は、アプリケーションのパフォーマンスの最適化に役立ちます。
ただし、学習曲線として Hibernate を使用することには欠点があります。ただし、キャッシング、継承マッピング、分散トランザクションの実装を開始するとき、その最も単純な操作が大部分を占めますが、最初は理解するのが困難に直面する可能性があります。 Hibernate によって提供される抽象化は、特定の状況、特に高度に最適化されたクエリが必要な場合にオーバーヘッドを追加する可能性もあります。
以下にクラス Product の例を示し、その下に Hibernate によって実装される JPA アノテーションの一部の説明を示します。
`@Entity
@Table(name = "製品")
パブリック クラス 製品 {
@Id @GeneratedValue(strategy = GenerationType.SEQUENCE) private BigInteger id; @Column(name = "nome_produto", nullable = false) private String nome; @Column(name = "descricao_produto") private String descricao; @Column(name = "preco_produto", nullable = false) private BigDecimal preco; // Getter e Setters
}`
@エンティティ
@Entity アノテーションは、Product クラスが JPA エンティティであることを示します。これは、データベース内のテーブルにマップされることを意味します。 Product クラスの各インスタンスは、このテーブルの行に対応します。
クラスには、データベース内のエンティティの一意の識別子 (主キー) を示す @id アノテーションを持つフィールドが必要です。
@Table(name = "製品")
@Table アノテーションは、このエンティティがマップされるデータベース内のテーブルの名前を指定します。この例では、name = "product" は、Product エンティティに関連付けられたテーブルが "product" と呼ばれることを定義します。 @Table アノテーションが指定されていない場合、デフォルトでテーブル名はクラス名になります。
@id
@id 注釈は、id フィールドをエンティティの主キーとしてマークするために使用されます。データベースでは、このフィールドは Product エンティティの各インスタンスの一意の識別子として使用されます。
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@GeneratedValue アノテーションは、id フィールドの値が自動的に生成されることを示します。 Strategy = GenerationType.SEQUENCE プロパティは、Hibernate がシーケンスを使用してデータベース内の主キー値を生成する必要があることを指定します。
主キーを生成するには、次のような他の戦略もあります。
AUTO: 戦略の選択を永続プロバイダー (この場合は Hibernate) に委任します。
IDENTITY: データベースの ID 列を使用します。挿入中に値が自動的に生成されます。
TABLE: 特定のテーブルを使用して主キーを保存します。
@Column(name = "product_name", nullable = false)
@Column 注解将类名字段映射到数据库中相应的列。在示例中,该列将被称为“product_name”。
nullable = false 参数表示该列在数据库中不能为空。换句话说,名称字段必须有一个值。
Hibernate 是一个强大而灵活的工具,用于在 Java 应用程序中操作数据,无需手动编写 SQL。它通过抽象数据库对象和表之间的映射来促进复杂应用程序的开发,并且与 JPA 规范兼容,它提供了标准化的 API,并且可以使用高级功能。
以上がHibernate の簡単な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。