외래키(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가 이 차이를 자동으로 해결해 주기 때문에, 개발자는 객체지향적으로 코드를 작성하면 된다.
'BackEnd > Spring' 카테고리의 다른 글
| [Spring] @OneToMany와 @ManyToOne (0) | 2026.08.05 |
|---|---|
| [Spring] Spring Boot에서 웹 요청은 어떻게 처리될까? (@Controller, @GetMapping) (0) | 2026.08.05 |
| [Spring] 테스트 환경 분리(dev / test) (0) | 2026.08.04 |
| [Spring] BaseEntity와 @MappedSuperclass (0) | 2026.08.04 |
| [Spring] 더티 체킹(Dirty Checking) (0) | 2026.08.04 |
댓글