객체 - DB 간 패러다임 불일치
객체는 참조 (Reference) 로, DB는 외래키(foreign key) 로 연관관계를 맺는다.
이 때문에 OOP 와 DB 간의 패러다임 불일치가 발생한다.
1. 객체지향 언어는 참조로, RDB 는 외래키로 맵핑한다.
Team 이 부모, Member 가 자식 테이블이라 해보자.
MemberTeam.java
member_team.sql
참조가 아닌 Foreign Key (teamId) 로 맵핑한다.
-- 팀별로 소속된 멤버를 모두 불러옴
SELECT *
FROM Member AS m
JOIN Team AS t
-- teamId 와 team.id 를 매핑
ON m.teamId = team.id
2. Entity 신뢰 문제
DB Entity - Class 간 매핑시 최초에 실행한 쿼리에 따라서 불러올 수 있는 Entity 의 탐색 범위가 결정된다.
Team과 Member 만 맵핑할 수도 있다.
이와같은 방식으로는 코드상에서 매번 "불러올 수 있는 엔티티의 범위가 어디까지인지 확인" 해야만 한다.
이를 해결하기 위해 모든 Entity Class 를 항상 미리 로딩해두는 것도 비효율 적이다.
연관관계가 존재하는 모든 Entity 에 대해 항상 JOIN 쿼리를 호출해야하기 때문이다.
JPA 는 이런 문제를
해결하기 위해 나왔다.
'JVM > JPA' 카테고리의 다른 글
[JPA] 상속관계 매핑 (0) | 2023.01.13 |
---|---|
[JPA] 1:1 연관관계 설정 (0) | 2023.01.12 |
[JPA] auto_increment 전략 IDENTITY vs SEQUENCE (0) | 2023.01.09 |
[JPA] API 생성시 Entity 를 반환하지 말자. (0) | 2022.12.29 |