EntityMapping
7208 ワード
Entity Mapping
M:N関係でない場合は、1つのオブジェクトでテーブルのFKを管理します.
=>FKの管轄オブジェクトは、関連関係において所有者である
関連関係の所有者
関連関係の所有者エンティティは、外部キーを登録、変更、削除できます.
ご主人様以外のEntityは読み取り専用です
Annotationの使用
@Table(name=...)
@ID
@GeneratedValue(strategy = GenerratedValue.~)
@IDを使用してプライマリ・キーを自動的に生成
IDENTITY:プライマリ・キー生成をDBに委任し、自動増分
SEQUNCE
TABLE
AUTO
@Column(name = ..., nullable=..., length=...)
@JoinColumn
1対のマルチリレーションシップマッピングでは、
DBの観点からFKを管理し,ターゲットテーブルのPKを示す.
すなわち,@JoinColumnを用いたクラスは関連関係の所有者である.
@Entity
class Member {
@Id @GeneratedValue
private Long member_id;
@ManyToOne
@JoinColumn(name="team_id")
private Team team;
...
}
@Entity
class Team {
@Id @GeneratedValue
private Long team_id;
...
}
=>>オブジェクトをFKとして読み込む@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "id")
private List<AnotherObject> anotherObjects;
=>>1:マッピングの場合はlistを使用@mappedBy
ManyToOneとは異なり、
@Entity
class Member {
@Id @GeneratedValue
private Long member_id;
@ManyToOne
@JoinColumn(name="team_id")
private Team team;
...
}
@Entity
class Team {
@Id @GeneratedValue
private Long team_id;
@OneToMany(mappedBy = "team")
private List<Member> members = new ArrayList<>();
...
}
=>mappedBy="team"は、メンバークラスがTeamオブジェクトを持ち、関連関係の所有者であることを示します.==>双方向関係で使用
@JoinTable
2つのテーブル間の関連付けを管理するときに、個別のテーブルを作成する場合は、
関連メソッド
双方向の関連付けでは、2つのオブジェクトに同時に注意する必要があります.
一つの方法の中で双方の関係を確立したほうがいい.
このような双方向関係を一度に確立する方法を関連方法と呼ぶ.
サービスロジックを記述する場合、PKの一方がFKの一方を参照して値を取得する際に相関関係を設定していないため、相関関係を確立するプロセスが必要であるが、あらかじめメソッド(相関関係便利メソッド)を作成して使用する必要がある.
Reference
この問題について(EntityMapping), 我々は、より多くの情報をここで見つけました https://velog.io/@kht1997/EntityMappingテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol