Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- cors
- AuthenticationPrincipal
- rest api
- 백기선
- 정적 리소스
- 외부설정
- Application Runner
- 스프링 부트
- 알고리즘
- WebApplication Type
- Spring Security
- @Profile
- 리소스 서버
- 다익스트라
- OAuth2
- HATEOAS
- webjar
- Application Event
- application.properties
- HttpMessageConverters
- JPA
- 리소스핸들러
- 백트래킹
- 백준
- EnableAutoConfiguration
- @ConfigurationProperties
- JsonSerializer
- 스프링부트
- 브루트포스
- Application Argument
Archives
- Today
- Total
아카이브
[스프링 데이터 JPA] ORM 패러다임 불일치 본문
객체 | 릴레이션 |
밀도(Granularity) 문제
다양한 크기의 객체를 만들 수 있음 커스텀한 타입 만들기 쉬움 |
테이블 기본 데이터 타입 (UDT는 비추) |
서브타입(Subtype) 문제
상속 구조 만들기 쉬움 다형성 |
테이블 상속이라는게 없음 상속 기능을 구현했다 하더라도 표준 기술이 아님 다형적인 관계를 표현할 방법이 없음 |
식별성(Identity) 문제
레퍼런스 동일성 (==) 인스턴스 동일성 (equals() 메소드) |
주키 (primary key) |
관계(Association) 문제
객체 레퍼런스로 관계 표현 근본적으로 '방향'이 존재한다 다대다 관계를 가질 수 있음 |
외래키(foreign key)로 관계 표현 '방향'이라는 의미가 없음 그냥 join으로 아무거나 묶을 수 있음 태생적으로 다대다 관계를 못만들고, 조인 테이블 또는 링크 테이블을 사용해서 두개의 1대다 관계로 풀어야 함 |
데이터 내비게이션(Navitation)의 문제
레퍼런스를 이용해서 다른 객체로 이동 가능 콜렉션을 순회할 수도 있음 |
하지만 그런 방식은 릴레이션에서 데이터를 조회하는데 있어서 매우 비효율적이다 데이터베이스에 요청을 적게 할 수록 성능이 좋다 따라서 join을 쓴다 하지만, 너무 많이 한 번에 가져오려고 해도 문제다 그렇다고 lazy loading을 하자니 그것도 문제다 (n+1 select) |
'Spring > 스프링 데이터 JPA' 카테고리의 다른 글
[스프링 데이터 JPA] JPA 프로그래밍 2. 엔티티 타입 맵핑 (0) | 2021.01.10 |
---|---|
[스프링 데이터 JPA] JPA프로그래밍 1. 프로젝트 셋팅 (0) | 2021.01.10 |
[스프링 데이터 JPA] ORM 개요 (0) | 2021.01.10 |
[스프링 데이터 JPA] 핵심 개념 이해 (0) | 2021.01.10 |
[스프링 데이터 JPA] 인트로 (0) | 2021.01.10 |