ホームページ > データベース > mysql チュートリアル > `@Id` および `@GeneratedValue(strategy = GenerationType.IDENTITY)` アノテーションは JPA で自動インクリメント ID をどのように生成しますか?

`@Id` および `@GeneratedValue(strategy = GenerationType.IDENTITY)` アノテーションは JPA で自動インクリメント ID をどのように生成しますか?

DDD
リリース: 2025-01-06 02:39:40
オリジナル
789 人が閲覧しました

How Do `@Id` and `@GeneratedValue(strategy = GenerationType.IDENTITY)` Annotations Generate Auto-Incrementing IDs in JPA?

自動インクリメントテーブル ID の @Id および @GeneratedValue(strategy = GenerationType.IDENTITY) アノテーションを理解する

Java Persistence API ( JPA)、@Id アノテーションはフィールドをエンティティの主キーとしてマークします。 @GeneratedValue アノテーションは、主キー値の生成方法を指定します。一般的に使用される戦略の 1 つは、データベースの自動インクリメント機能に依存する GenerationType.IDENTITY です。

これらのアノテーションを使用する理由

これらのアノテーションには、次のような利点があります。

  • 利便性: のプロセスを自動化します。主キーを管理し、手動割り当ての必要性を排除します。
  • データの整合性: データベースの自動インクリメント メカニズムに依存することにより、アノテーションにより主キーの値がテーブル内で一意であることが保証されます。
  • データベースに依存しない: 注釈は特定のデータベース機能を必要とせず、機能することができます。

使用例

次のコード例は、@Id および @GeneratedValue(strategy = GenerationType.IDENTITY) アノテーションの使用方法を示しています。 :

@Entity
public class Author {

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

    private String name;
    private String address;

}
ログイン後にコピー

この例では、id フィールドに両方の注釈が付けられています。 @Id および @GeneratedValue(strategy = GenerationType.IDENTITY)。これが主キーであり、自動インクリメントされる必要があることを示します。

GenerationType.IDENTITY と他の型

GenerationType.IDENTITY は、@GeneratedValue アノテーションで使用できるいくつかの戦略タイプの 1 つです。他のタイプには次のものがあります。

  • AUTO: 使用されているデータベースに基づいて適切な戦略を選択するように永続化プロバイダーに指示します。
  • TABLE: データベーステーブルを使用して主キーを生成します値。
  • SEQUENCE: キーの生成にはデータベース シーケンス オブジェクトに依存します。

使用する適切な型は、使用されている特定のデータベースと要件によって異なります。

ドメイン拡張の必要性Class

ドメイン抽象クラスを拡張する必要性は、特定のアプリケーション要件によって異なります。通常、ドメイン クラスは、ドメイン モデル内のエンティティに共通の機能と動作を提供します。この例では、Author クラスは特定のドメイン関連の機能を必要としないため、Domain クラスを拡張する必要はないようです。

以上が`@Id` および `@GeneratedValue(strategy = GenerationType.IDENTITY)` アノテーションは JPA で自動インクリメント ID をどのように生成しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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