JPA의 다대다 연관 관계에 대해서 공부하다가 고민이 생겼다.
식별자를 지정할 때 인조키로 하느냐 복합키로 하느냐이다.
둘 다 일장일단이 있겠지만 대부분의 사람들이 임의로 id를 추가하는 auto_increment 방식의 인조키를 사용하는 것을 추천하는 것 같다. 두 방식의 대략적인 장단점은 다음과 같다.
인조키
장점
고유한 값을 보장하기 때문에 중복 방지에 효과적이다.
복합키에 비해서 JPA의 다대다 관계를 구성하기 쉽고 간단하다.
단점
인조키를 위한 추가적인 저장공간이 필요하다.
복합키
장점
자연키만으로 식별자를 설정할 수 있어 식별자를 위한 추가적인 계산을 하지 않아도 된다.
단점
인덱스 크기를 증가시킨다.
검색시 성능 저하가 발생할 수 있다.
JPA의 다대다 관계 구성 시에 인조키에 비해서 미리 설정을 더 해두어야 한다.
사실 인조키를 사용해야할지 고민했던건 키의 길이 때문이다. 자료형은 한계가 있기에 수많은 추가가 이루어지면 언젠가 최대값에 도달하지 않을까 했는데 괜한 고민이었던 것 같다. 양수로는 9,223,372,036,854,775,807만큼의 크기를 저장할 수 있어서 사실상 고민없이 사용할 수 있는 수치이지 않나 싶다.
'공부 > JPA' 카테고리의 다른 글
| [JPA] OneToOne에서의 N + 1 문제 (0) | 2024.02.27 |
|---|---|
| [JPA] 프록시 (Proxy) (0) | 2024.02.24 |
| [JPA] 다대다 연관 관계에서 복합키 사용하기 (0) | 2024.02.21 |
| [JPA] 연관 관계 매핑 확인하기 (0) | 2024.02.16 |
| [JPA] 영속성 컨텍스트 (Persistence Context) 테스트하기 (1) | 2024.02.14 |