ホームページ > データベース > mysql チュートリアル > @Id および @GeneratedValue アノテーションは Java Persistence で主キーと自動インクリメントをどのように管理しますか?

@Id および @GeneratedValue アノテーションは Java Persistence で主キーと自動インクリメントをどのように管理しますか?

Patricia Arquette
リリース: 2025-01-06 03:48:41
オリジナル
254 人が閲覧しました

How do @Id and @GeneratedValue Annotations Manage Primary Keys and Auto-Increment in Java Persistence?

注釈 @Id と @GeneratedValue: 理解と構成

概要

注釈は、 Java エンタープライズ アプリケーションで重要な役割を果たし、簡潔で強力な構成機能を提供します。永続化で使用される 2 つの一般的なアノテーションは、@Id と @GeneratedValue です。これらは、主キーとその生成戦略を定義するために不可欠です。

@Id: 主キーの定義

@Id アノテーションは javax.persistence.Id から継承され、オブジェクトの主キーとして機能するメンバーフィールドを示します。 実在物。このアノテーションは、テーブル内の一意の行を識別するために使用されます。

@GeneratedValue: 自動インクリメントの構成

@GeneratedValue アノテーションは、javax.persistence.GeneratedValue から継承され、指定された列の生成戦略を制御します。これにより、主キー値が自動的に入力され、明示的な割り当ての必要がなくなります。

GenerationType.IDENTITY: データベース サーバーを使用した自動インクリメント

GenerationType.IDENTITY は戦略です。これはデータベース サーバーに依存して主キー値を自動的に生成します。これは、自動インクリメント列をサポートする MySQL や PostgreSQL などのデータベースでよく使用されます。この戦略を使用すると、主キーの値がデータベース自体によって生成されるため、便利かつ効率的になります。

その他の生成タイプ

GenerationType.IDENTITY のほかに、他の世代以下の戦略が含まれます:

  • GenerationType.SEQUENCE: データベースを使用して主キー値を生成します。
  • GenerationType.TABLE: 主キー値を格納するための別のテーブルを作成します。
  • GenerationType.AUTO: 永続化プロバイダーが最も適切な戦略を選択できるようにします。

サンプル実装

次の Java クラス@Id と @GeneratedValue(strategy = GenerationType.IDENTITY) の使用を示します:

@Entity
public class Author {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;
    
    // Other fields...
}
ログイン後にコピー

この例では、id フィールドが Author エンティティの主キーとなり、一意の値が自動的に入力されます。データベースによって生成されます。

ドメイン クラスの拡張

提供されたクラスでは、Author クラスは抽象 Domain クラスを拡張します。これは、複数のエンティティ間で共有される動作とデータ検証ルールの一般的な抽象化を提供するための一般的な方法です。

結論

@Id や @GeneratedValue などの注釈は不可欠なツールですJava エンタープライズ アプリケーションでのデータの永続性を管理します。これらのアノテーションがどのように機能するかを理解することで、主キーを効果的に定義し、自動インクリメント戦略を構成してデータベース操作を合理化できます。

以上が@Id および @GeneratedValue アノテーションは Java Persistence で主キーと自動インクリメントをどのように管理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート