본문 바로가기
  • Let's study
BackEnd/Spring

[Spring] 외래키

by 코딩고수이고파 2026. 8. 4.

외래키(Foreign Key)

외래키는 항상 자식(N) 테이블이 가진다.

유저(1)
   │
   └──── 게시글(N)

@ManyToOne

JPA에서는 객체를 직접 참조한다.

@ManyToOne
private Member author;
 

@ManyToOne

앞쪽(Many)은 현재 클래스(자식 테이블) 뒤쪽(One)은 멤버 변수(부모 테이블)를 의미한다.

JPA와 DB의 패러다임 차이

구분 JPA 데이터베이스
참조 방식 객체를 직접 참조 외래키로 식별
관계 표현 객체 필드로 다른 객체를 가짐 관계(조인)는 행(Row)의 키로 연결
식별자(참조) 방식 객체 변수(예: Member author) 외래키 컬럼(예: author_id)
데이터 접근 객체 그래프 탐색(계단식 접근 가능) SQL JOIN 필수, 직접 접근 불가
상속 객체에서 상속(extends) 자유롭게 사용 테이블 상속 직접 지원하지 않음

객체는 다른 객체를 바로 참조할 수 있지만 데이터베이스의 행은 다른 행을 직접 "참조"하지 못하고, 외래키라는 값을 통해 간접적으로만 연결할 수 있다.

패러다임 불일치

객체지향과 관계형 데이터베이스는 구조 자체가 다르다.

이를 패러다임 불일치라고 한다.

JPA가 이 차이를 자동으로 해결해 주기 때문에, 개발자는 객체지향적으로 코드를 작성하면 된다.

댓글