인프런 커뮤니티 질문&답변

정윤성님의 프로필 이미지

작성한 질문수

실전! Querydsl

소개

외래키설정 ConstraintMode

20.03.06 19:22 작성

·

1.9K

2

ConstraintMode.NO_CONSTRAINT를 이용해서 조인컬럼을 지정할경우 논리적으로만 맺고 물리적인 외래키를 맺지않는걸로 알고있는데 이러한 방법으로 외래키를 지정하는게 좋은방법인가요 ?

답변 3

10

김영한님의 프로필 이미지
김영한
지식공유자

2020. 03. 07. 01:19

안녕하세요 윤성님^^ 좋은 질문입니다.

해당 옵션을 사용하면 JPA가 자동으로 생성해주는 DDL에 외래키 제약조건을 넣고 빼고 하는 곳에만 영향을 줍니다. 실제 운영에서는 이런 JPA가 제공하는 DDL을 사용하는게 아니라, 직접 DDL을 작성해서 DB에 반영하는 식으로 진행해야 합니다.

그렇기 때문에 해당 옵션이 실제 운영에서는 영향을 주지는 않습니다.

결국 본질적인 질문으로 돌아오면 이 질문은 JPA에 대한 내용이라기 보다는 순수 RDB의 FK 제약조건을 사용할 필요가 있는가? 라는 질문으로 생각하고 답변을 드리겠습니다.

RDB에서 FK 제약조건을 사용하는게 좋다, 사용하면 성능도 떨어지고 시스템을 운영하기도 불편하다 등등 여러가지 의견이 많습니다.

제 경험을 말씀드리면, 저는 기본은 FK 제약조건을 사용하는 것이 좋다고 생각합니다. FK 제약조건을 사용하지 않아서 실제 물리 DB에 데이터가 중복으로 입력되거나, 이상하게 되어서 애플리케이션에서 고생하는 경우를 너무 많이 보았습니다.

다만 FK 제약조건을 사용하지 않는 것이 더 나은 상황도 있습니다. 예를 들어 데이터가 너무 많거나(1억건이 넘어가거나) 테이블이 정교함 보다는 로그성 처럼 좀 틀려도 되는 경우에는 외래키를 맺지 않는 것이 더 좋을 때도 있습니다.

제가 권장드리는 방법은 기본은 FK 제약조건을 정교하게 사용하다가, 애플리케이션에 데이터 적제가 너무 많아져서 제약조건이 문제가 되는 시점에 DBA분과 상의하고 진행방향을 결정하는 것을 권장드립니다^^

감사합니다.

2

정윤성님의 프로필 이미지
정윤성
질문자

2020. 03. 07. 15:42

친절하고 자세한 답변 감사합니다 !! 바로이해됐습니다

0

김영한님의 프로필 이미지
김영한
지식공유자

2020. 03. 07. 16:07

네^^! 좋은하루 되세요