JPA関連


🙋‍♀️ ただいま整理中です

オブジェクト関係のマッピング


@JoinColumn


プライマリ・プロパティ
  • nameマッピングする外部キー名
  • referencedColumnName外部キー参照先テーブルのカラム名
  • foreignKey外部キー制約を直接指定(テーブル作成時にのみ使用)
  • name

  • nameマッピングする外部キーの名前を指定します.
  • @JoinColumn(name="user_id")ユーザの情報をどのカラムに格納するかを指定します.
    これによりAnswerにはuser idという列が表示され、Userのidが含まれます.
  • 省略すると、列名엔티티의 이름および(+)pk 이름が自動的に生成されます.(ex.エンティティ名pk名)
  • public class Answer {
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private Long id;
        ...
        @ManyToOne(fetch = FetchType.LAZY)
        @JoinColumn(name = "user_id")
        private User writer;
    }

    referencedColumnName

  • 外部キーが参照するターゲット・テーブルのカラム名を指定します.
  • foriegnKey

  • 外部キー制約を直接指定できます
  • 外部キー制約
  • 外部キー制約は、2つのテーブル間の関係を宣言することによって、データの整合性を保証します.
    「外部キー関係が確立されると、あるテーブル(外部キーテーブル)は別のテーブル(データムテーブル)に依存します.」外部キーテーブルが参照する「標準テーブル」列は、PKまたはUNIQUE制約を設定する必要があります.
  • 最終的に、外部キー制約を指定することは、外部キーを指定したときに参照されるキーに加えて、外部キーの名前を指定したり、制約で制約を定義したり作成したりすることを意味します.
  • foreignKeyタイプは@Foreignです.
  • 正式ドキュメントを表示する場合、@ForeignTypeのプロパティは次のとおりです.
  • nameは外部キー制約の名前です.
  • foreignKeyDefinition外部キー制約を定義します.
  • valueスキーマの作成時に外部キー制約を作成する必要があるかどうかを指定
  • したがって、JPAを使用するときにForeignKeyとして名前を付ける場合は、@JoinColumnを使用してforeignKeyと名前を付けることができます.
    例として、foreignKeyのnameを設定すると、add constraintFKihcxeouul..とともにadd constraintfk_answer_to_questionに変更されて表示されることがわかる.
  •     @ManyToOne(fetch = FetchType.LAZY)
        @JoinColumn(name = "question_id", foreignKey = @ForeignKey(name = "fk_answer_to_question"))
        private Question question;