티스토리 뷰

https://www.inflearn.com/course/ORM-JPA-Basic/dashboard

 

자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 강의

초급자를 위해 준비한 [웹 개발, 백엔드] 강의입니다. JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자

www.inflearn.com

 

1강. 

 

지금 시대는 객체를 관계형 데이터베이스에 관리한다.

 

SQL 중심적인 개발의 문제점

무한 반복, 지루한 코드

CRUD
INSERT INTO …
UPDATE …
SELECT …
DELETE …
자바 객체를 SQL로 ...
SQL을 자바 객체로 .

 

- 하나라도 중간에 실수로 빠뜨려버린다면 매우 곤란한 상황이 초래됨. 처음부터 눈 비벼가며 일일이 다 찾아내야 한다.

 

결국,

SQL 의존적인 개발을 하기가 어렵다.

 

현실적 대안은 관계형 데이터베이스

 

 

즉 개발자는 SQL 매퍼라고 해도 손색이 없다...!

 

객체와 관계형 테이터베이스의 차이

1. 상속

2. 연관관계

3. 데이터 타입

4. 데이터 식별 방법

* 데이터베이스 테이블에는 명확하게 상속관계를 저장할 방법이 없다.

(정확하게는 객체와 같지 않다.)

 

 

 

 

ALBUM의 저장 순서

1. 객체 분해

2. INSERT INTO ITEM ..

3. INSERT INTO ALBUM ...

 

ALBUM의 조회 순서

1. 각각의 테이블에 따른 조인 SQL 작성

2. 각각의 객체 생성...

 

매우 복잡한 과정 => 케이스마다 조인을 해아 하므로

그래서 DB에 저장할 객체에는 상속 관계를 사용하지 않는다.

 

 

그런데,,,,,

자바 컬렉션에 저장한다면??

이거 하나면 끝....!!!

 

자바 컬렉션에서 조회한다면??

이렇게 단순함.

 

 

 

 

 

 

 

 

 

 

 

 

 

객체 그래프 탐색

- 객체는 자유롭게 객체 그래프를 탐색할 수 있어야 한다.

그런데 이 상태는 지금 군데군데 끊어져 있다!!!

즉, 처음 실행하는 SQL에 따라서 탐색의 범위가 결정됨

SELECT M.*, T.*
FROM MEMBER M
JOIN TEAM T ON M.TEAM_ID = T.TEAM_ID

이렇게 되어있다면

 

member.getTeam(); //OK
member.getOrder(); //null

 

발생할 수 있는 문제

엔티티 신뢰 문제

 

 

 

계층형 아키텍처,

진정한 의미의 계층 분할이 어렵다

=> "물리적으로는 분할이 되어 있으나, 논리적으로는 엮여 있다."

 

비교하기

 

비교하기 - 자바 컬렉션에서 조회

 

 

이러한 고민의 생성

-> 이 고민의 해결 과정에서 JPA가 등장.두둥

728x90
반응형

'[개발] - Spring > JPA 공부' 카테고리의 다른 글

flush와 준영속 상태  (0) 2023.08.14
영속성 컨텍스트  (0) 2023.08.13
JPA의 등장과 발전  (0) 2023.08.12
JPQL 간단한 소개  (0) 2023.08.11
JPA 애플리케이션 개발 도입  (0) 2023.08.11
Comments
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
250x250