Backend/Database
[JPA] 연관관계 매핑 주의점 정리
mopil
2022. 8. 19. 18:19
반응형
# 테이블 별 PK (ID) 설정 시 주의점
- ID는 테이블 별로 독립적으로 생성하는게 좋다 -> 서비스가 커질수록 공통으로 ID 값을 쓰면 관리하기 어렵기 때문이다.
- 비슷한 의미에서 ID 값은 Int 보다는 Long을 사용한다 -> Int 최대값 : 21억, Long 최대값 : 경단위. 나중에 서비스가 커지면 21억의 숫자는 나름 금방 채워지고, 이때 Int -> Long 마이그레이션 비용이 많이 발생한다. (실무팁)
# 외래키의 주인은 '다' 쪽에서 관리한다
# @ManyToMany 다대다
- JPA에서 다대다 옵션을 제공하긴 하지만, 실무에서는 사용하면 안 된다.
- 암묵적으로 테이블을 만들어줘서 관리하기 힘들기 때문이다.
# 다대다 구현
- 일대다 + 다대일 관계로 풀어서 테이블을 설계한다.
- 암묵적 테이블을 엔티티 수준으로 승격시켜서 사용해야한다.
# 1:다 - 1 입장
@OneToMany(mappedBy = "XXX", cascade = CasecadeType.ALL)
- 1 입장에서 삭제를 했을 때, 다 입장도 같이 지워질 수 있도록 Casecade 옵션을 넣는다.
- mappedBy 를 설정해주지 않으면, 추가적인 칼럼이 생성되므로 넣어주자.
- 다 입장을 받을때는 리스트를 이용해서 복수형으로 받는다.
# 1:다 - 다 입장
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "XXX_id")
반응형