ORM

‍정진철·2022년 9월 18일
0

참조 : https://www.youtube.com/watch?v=VTqqZSuSdOk
https://changrea.io/jpa/orm/

ORM 을 사용해야 하는 근본원 적인

--> 패러다임 불일치 문제

  • 객체지향 언어가 추구하는 방향성 : 추상화 , 상속 다형성

  • RDB (관계형 데이터 베이스) : 데이터 중심의 구조
    EX) MySQL, ORACLE, Postgres
    -> {key:value}의 관계로 2차원 표(테이블)형식으로 나타낸 데이터베이스.
    -> Client-Sever 구조 따라서 클라이언트가 요청을 보낼 때 쓰는 언어가 SQL(Structured Query Language)

  • 각자 지향하는 방향이 다르므로 간극 발생

  • 백엔드 언어로 개발을 하면서도 DB를 사용하기 위해서 SQL 까지 신경을 써줘야 한다는 점.

  • 매 기능 개발시 해당 기능에 맞춤 데이터를 가져와야 하는 그에 맞는 SQL Query를 매번 작성해야한다.


ORM(Object Relational Mapping)

  • 객체 지향 프로그래밍에서 객체와 관계형 데이터베이스의 테이블을 맵핑.

ORM 종류

  • Node.js -> Sequalize
  • Java -> Hybernate, JPA
  • Django -> 내장 ORM
  • Flask -> SQLAlchemy

영속성 (persistence)

데이터를 생성한 프로그램이 종료되더라도 사라지지 않는 특성을 영속성이라고 한다.

흔히 말하는 MVC(Model , View , Controller) 모델은 4개의 층으루 구성됨

  • Presentation Layer (UI Layer), Control Layer (Application Layer or Service Layer), Business Layer (Domain Layer), Persistence Layer

Persistence Layer

  • 데이터베이스에서 데이터를 빼내어(Read) 객체화하거나 데이터 베이스에 데이터를 저장 (Create), 수정(Update), 삭제(Delete)하는 역할.

  • Persistence Layer 구현시 Persistence Framework 사용
    -> Persistence Framework는 SQL Mapper와 ORM으로 나뉜다.

SQL Mapper

  • SQL <-> SQL Mapper <-> Object 필드
  • SQL 문장으로 직접 데이터베이스 데이터 다룸.
  • SQL 직접 작성 필요
  • Ex) Mybatis, JdbcTemplates(Spring)

ORM

  • 데이터베이스 데이터 <- ORM -> Object 필드
  • 객체를 통해 간접적으로 데이터베이스 데이터를 다룸.
  • 객체와 관계형 데이터베이스의 데이터와 자동으로 맵핑
    --> SQL Query가 아닌 메소드로 데이터 조작
  • Ex) JPA, Hibernate
profile
WILL is ALL

0개의 댓글