ORM, 왜 등장했을까?

SQL 중심의 개발에서 객체 중심의 개발로.

 

SQL 중심의 문제점 : “객체와의 패러다임 불일치로 매핑 작업이 늘어난다”

 

 

객체와 모델을 릴레이션하다?

객체와 관계형 DB의 차이는 뭔데?

객체는 상속이 있는데 관계형 DB는 있나?

패러다임의 불일치

객체 그래프 탐색

 

 

[1] 객체의 상속 개념을 DB에 녹이기 어렵다 ( 타입 - 슈퍼서브 , 싱글 , 각각이 있지만..)

→ Item과 Album을 등록하려면?

→ 객체는 상속받은 Album 안에 정보를 모두 입력할 수 있다.

→ DB는 Item에 insert , Album에 insert 해야 한다.

 

[2] SQL 중심의 모델링은 FK를 1쪽 집합에 줘야 한다. 조회시 조인이 필요

 

[3] 객체 그래프 탐색의 한계

 

[4] 객체와 DB의 == 관계다 다르다. 객체는 같다고 보는데 DB는 다르게 본다.

 

JPA : Java Persistence Api ( 자바 영속성)

 

ORM : 객체는 객체대로 , 관계형 DB는 관계형 DB 대로 설계한다.

prisma 도 ORM 인가?

 

JPA가 동작하는 원리

 

JPA 사용하는 이유

→ SQL 중심적인 개발에서 객체 중심으로 개발

→ 패러다임 불일치 해결

→ 유지보수 및 생산성 증가

→유지보수 측면 : 일일이 CRUD 쿼리를 안짜도 된다.

→생산성 : 객체에 맞게 짜면 알아서 DB까지 나이스하게 할 수 있다.

→ 1차 캐시와 동일성 보장

→ 동일 트랜잭션 내에서는 동일한 엔터티를 반환한다 ( Repeatable Read 보장 )

→ 쓰기 지연으로 대량 insert 가능

→ 쓰기 지연으로 commit 시점에 update , delete sql을 보내기에 row락 최소화

→ 중간 비즈니스 로직이 있어도 row에 걸리지 않게 됨