レビュー
属性レベルの注釈
@Id
必須。これは、データベーステーブルのプライマリキーにマップされた属性を意味します。エンティティクラスは、プライマリキーにマップされた1つ以上の属性を持つことができ、プライマリキー属性またはgetXxx()メソッドに配置できます。
クラス内の複数の属性がプライマリキーとして定義されている場合、エンティティクラスはSerializableインターフェイスを実装する必要があります
@GeneratedValue(strategy = "")
①strategy= GeneratedValue.AUTO //基になるデータベースに従って自動的に選択します(デフォルト)
@Id //设置为主键
@GeneratedValue //主键自增
private int sid; //学号
②strategy= GeneratedValue.IDENTITY //データベースの識別フィールドに従って自動的に生成されます(主キーは整数である必要があります)
③strategy= GeneratedValue.SEQUENCE //シーケンスを使用して主キーの値を決定します
④strategy= GeneratedValue.TABLE //指定されたテーブルを使用してプライマリキーの値を決定します(@TableGenerator(name = "指定されたテーブル名")と組み合わせる必要があります)
主キーが文字列タイプの場合
@Id //设置为主键
@GeneratedValue(generator = "sid") //由于是主键的字符串类型, 无法使用默认自增, 此时需要指定主键生成器
@GenericGenerator(name = "sid", strategy = "assigned") //使用hibernate的注解自定义主键生成器, assigned为手动赋值
@Column(length = 8) //默认的长度为255, 对于主键来说太长, 需要重新指定
private String sid; //学号
@Column(属性は列にマップできます)
name:オプション、データベーステーブルのフィールドの名前を表します。デフォルトの状況は属性名と同じです。
nullable:オプション、フィールドを空にすることができるかどうかを示します。デフォルトはtrueです。
一意:オプション。フィールドのサイズを示します。文字列タイプのフィールドにのみ有効です。デフォルト値は255です(プライマリキーの場合、デフォルト値は使用できません)。
挿入可能:オプション。ORMフレームワークが挿入操作を実行するときにフィールドを挿入ステートメントに表示するかどうかを示します。デフォルトはtrueです。
updatable:オプション、ORMフレームワークが更新操作を実行するときにフィールドを更新ステートメントに表示するかどうかを示します。デフォルトはtrueです。この属性は、誕生日(誕生日)フィールドなど、一度作成すると変更できないフィールドに非常に役立ちます。
@Embedded(属性に追加され、これが埋め込みクラスであることを示します):@ Embeddableと連携する必要があります
@EmbeddedId(属性に追加され、これが複合プライマリキークラスであることを示します):@ Embeddableと連携する必要があります
@Id //设置为主键
@EmbeddedId //标注在属性上
private StudentPK pk; //学号
複合プライマリキークラスStudentsPK
@Embeddable
public class StudentsPK implements Serializable {
private static final long serialVersionUID = 6632444697825110476L;
@Column(length = 18)
private String id; //身份证号
@Column(length = 8)
private String sid; //学号
public StudentsPK(String id, String sid) {
this.id = id;
this.sid = sid;
}
public StudentsPK() {
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getSid() {
return sid;
}
public void setSid(String sid) {
this.sid = sid;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
StudentsPK studentPK = (StudentsPK) o;
return id.equals(studentPK.id) &&
sid.equals(studentPK.sid);
}
@Override
public int hashCode() {
return Objects.hash(id, sid);
}
}
@トランジェント
オプションで、属性がデータベーステーブルのフィールドへのマッピングではなく、ORMフレームワークがこの属性を無視することを意味します。属性がデータテーブルのフィールドマッピングでない場合は、@ Transientとしてマークする必要があります。そうでない場合、ORMフレームワークはデフォルトで注釈になります。 @Basic