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에 걸리지 않게 됨