ORM

YEONGHUN KO·2023년 8월 11일
0

BACKEND - DATABASE

목록 보기
1/8

prisma를 공부하기 전에 ORM이 라는 개념이 나와서 공부해보려고 쓴 글이다.

ORM은 Object Relational Mapping의 약자로 객체와 관계형 데이터를 이어주는 중재자 역할을 한다.

기본적으로 object와 relation data base는 여러면에서 다르다(mismatch)

잘은 모르겠지만 일단 이해한대로 정리해보려고 한다. 일단 아래 그림을 보자.

왼쪽이 객체이고 오른쪽이 테이블 데이터 이다. 이 테이블에 저장되어 있는 데이터와 객체를 연결해주는게 ORM이다.

크게 아래 처럼 다섯가지 이유로 불일치가 일어난다. 그러나 제대로 이해하면 그때 더 자세히 적어보려고 한다.

  1. granularity: 어떤 시스템이 얼마만큼 쪼개질 수 있냐는 것. table 데이터는 불가능, 객체는 가능
  2. inheritance or sub-types: 말그대로 상속을 의미. 부모 객체의 자산을 물려받느냐. table 데이터는 그럴 일이 잘 없음
  3. identity: 아직 이해가 잘 안감
  4. associations: 객체는 단방향 참조이지만 , 데이터는 양방향 참조이다.
  5. data navigation: 아직 이해가 잘 안감

ORM의 장점

query language가 아닌 객체 메소드를 이용하여 코드를 작성해 데이터에 접근하는게 가능하다.

그래서 시간이 단축되고 디자인패턴도 적용할 수 있다.

또한, 캐싱과 트랜잭션이 가능하다. 트랜잭션은 어떤 작업을 하기 위해 필요한 연산들의 집합을 말한다. 캐싱과 트랜잭션을 통해 여러가지 데이터베이스 작업을 동시에 처리가능하며 이를 통해 퍼포먼스가 향상된다고 한다.

그러나 무슨 말인지 잘 이해가 가지 않는다.(추후, 업데이트 예정)

출처: https://javabydeveloper.com/orm-object-relational-mapping/#impedance-mismatch

profile
'과연 이게 최선일까?' 끊임없이 생각하기

1개의 댓글

comment-user-thumbnail
2023년 8월 11일

개발자로서 성장하는 데 큰 도움이 된 글이었습니다. 감사합니다.

답글 달기