属性レベルの注釈の休止状態の注釈の開発

レビュー

休止状態の注釈の開発およびその他のレベルの注釈

属性レベルの注釈

@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

おすすめ

転載: blog.csdn.net/ip_JL/article/details/85680175