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 はテーブルについて話していることをすでに理解しています。桁。
GO TO FULL VERSION