2.1 アノテーション @Entity、@Table

クラスをデータベース内のテーブルにマップする場合は、それに最大 3 つのアノテーションを追加する必要があります。

まず、クラスにアノテーションを追加する必要があります@Entity。クラスの前にあるこのアノテーションは、これが単なるクラスではなく、オブジェクトをデータベースに保存する必要がある特別なクラスであることを Hibernate に伝えます。

例:

@Entity
class User {
    public int id;
    public String name;
    public int level;
    public Date createdDate;
}

Hibernate がこのクラスのオブジェクトを特別な方法で処理するには、これで十分です。

2 番目の注釈は です@Table。これを利用すると、このクラスが関連付けられるデータベース内のテーブルの名前を設定できます。例:

@Entity
@Table(name="user")
class User {
    public int id;
    public String name;
    public int level;
    public Date createdDate;
}

クラス名とテーブル名が同じ場合は、アノテーション@Tableを省略できます。

また、アプリケーションが複数のスキーマのテーブルを同時に操作する場合は、テーブルがどの特定のスキーマに配置されているかを指定する必要があります。

@Entity
@Table(name="user", schema="test")
class User {
    public int id;
    public String name;
    public int level;
    public Date createdDate;
}

はい、すべては見た目と同じくらいシンプルです。

2.2 @Column アノテーション

2 番目に知っておくべき重要なことは、テーブル列のクラス フィールドへのマッピングです。最も単純なバージョンでは、Hibernate はエンティティ クラスのフィールドを目的のテーブルの列に単純にマップします。

マッピングのニュアンスをすべて制御したい場合は、アノテーションを使用できます@Column。例:

@Entity
@Table(name="user")
class User {
   @Column(name="id")
   public Integer id;

   @Column(name="name")
   public String name;

   @Column(name="level")
   public Integer level;

   @Column(name="created_date")
   public Date createdDate;
}

注釈には@Columnさまざまなパラメータがあります。以下では、それらの中で最も一般的なものを検討します。

# 属性名 属性の種類 説明
1 名前 クラスフィールドのテーブル列名を設定します。
2 個性的 ブール値 すべてのフィールド値は一意である必要があります
3 NULL可能 ブール値 フィールドは null にすることもできます
4 長さ 整数 最大長(文字列の場合)

User Entity クラスのフィールドにいくつかの制約を追加してみましょう。

  • ユーザー名は一意であり、100 文字以内でなければなりません
  • レベルは null にすることもできます
  • createdDate を null にすることはできません

その場合、注釈は次のようになります。

@Entity
@Table(name="user")
class User {
   @Column(name="id")
    public Integer id;

   @Column(name="name", unique=true, length=100)
   public String name;

   @Column(name="level", nullable=true)
   public Integer level;

   @Column(name="created_date", nullable=false)
   public Date createdDate;
}

Userタイプのオブジェクトを作成し、すべてのnullフィールドをそのオブジェクトに割り当てることもできます。ただし、それをデータベースに保存しようとすると、Hibernate がチェックを実行し、制限に違反している場合は例外がスローされます。

2.3 @Id アノテーション

そして、もう 1 つの重要な注釈は です@Id。テーブルの主キーを設定するために使用できます。

必要なフィールドにこのアノテーションを指定するだけで、Hibernate がすべてを自動的に実行します。

@Entity
@Table(name="user")
class User {
   @Id
   @Column(name="id")
   public Integer id;

   @Column(name="name")
   public String name;

   @Column(name="level")
   public Integer level;

   @Column(name="created_date")
   public Date createdDate;
}

データベースにオブジェクトを追加するときにHibernate がオブジェクトのID を@GeneratedValue独自に生成するようにするには、アノテーションを 1 つ追加する必要があります。この場合、例は次のようになります。

@Entity
@Table(name="user")
class User {
   @Id
   @GeneratedValue
   public Integer id;

   @Column(name="name")
   public String name;

   @Column(name="level")
   public Integer level;

   @Column(name="created_date")
   public Date createdDate;
}

id@Columnフィールドのアノテーションは貴重な情報を持たないため、ここでは省略しました。テーブル内のフィールド名とカラム名は同じであり、残りのアノテーションのおかげで、Hibernate はテーブルについて話していることをすでに理解しています。桁。