ORM(Object Relational Mapping) 이란?

JiwonMoon·2021년 11월 22일
0
post-thumbnail

ORM(Object Relational Mapping)

ORM을 이해하기전에 단어들의 파악이 우선시 되어야한다.

영속성(Persistence)이란?
: 영구적으로 유지 되는 속성

  • 데이터를 생성한 프로그램이 종료되더라도 사라지지 않는 데이터의 특성
  • 영속성을 갖지 않는 데이터는 단지 메모리에서만 존재하기 때문에 프로그램을 종료하면 모두 잃어버리게 된다.

Object Persistence(영구적인 객체)

  • 메모리 상의 데이터를 파일 시스템, 관계형 데이터베이스 혹은 객체 데이터베이스 등을 활용하여 영구적으로 저장하여 영속성을 부여한다.
  • 데이터를 데이터베이스에 저장하는 3가지 방법
      1. JDBC ( Ex. java )
      1. Spring JDBC ( Ex. jdbcTemplate )
      1. Persistence Framework (Ex. Hibernate, MyBatis)

Persistence Layer

  • 프로그램의 아키텍처에서, 데이터에 영속성을 부여해주는 계층을 말한다.

  • JDBC를 이용하여 직접 구현할 수 있지만 Persistence Framework를 이용한 개발이 많이 이루어진다.


- 데이터를 데이터베이스에 저장하는 방법에는 3가지가 있다.
1. JDBC (java에서 사용)
2. Spring JDBC (ex)JdbcTemplate)
3. Persistence Framework (Ex. Hibernate, 등)

- ORM(Object Relational Mapping)이란?

Object Relational Mapping, 객체-관계 매핑

  • 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑(연결) 해주는 것을 말한다.
    • 객체 지향 프로그래밍은 클래스를 사용하고, 관계형 데이터베이스는 테이블을 사용한다.
    • 객체 모델과 관계형 모델 간에 불일치가 존재한다.
    • ORM을 통해 객체 간의 관계를 바탕으로 SQL을 자동으로 생성하여 불일치를 해결한다.

즉, DB의 테이블을 객체인 클래스를 이용하여 매핑해주는 기술

ORM의 장단점

장점

  • 객체 지향적인 코드로 인해 더 직관적이고 비즈니스 로직에 더 집중할 수 있게 도와준다.
    • ORM을 이용하면 SQL Query가 아닌 직관적인 코드(메서드)로 데이터를 조작할 수 있어 개발자가 객체 모델로 프로그래밍하는 데 집중할 수 있도록 도와준다.
      • 선언문, 할당, 종료 같은 부수적인 코드가 없거나 급격히 줄어든다.
      • 각종 객체 대한 코드를 별도로 작성하기 때문에 코드의 가독성을 올려준다.
  • The Object-Relational Impedance Mismatch
  • Association(연관성)
    - One-To-One Relationship
    - One-To-Many Relationship

- EJB

  • 과거의 사용되었던 자바의 표준이다 (Entity Bean)
  • 과거의 대표적 ORM
  • 문제발생
    • API의 복잡성이 높다. (Interface를 많이 구현해야하는 이유때문에)
    • 속도가 느리다.

- Hibernate

  • ORM 프레임워크, Open Souse SW
  • EJB 의 이용을 대체할 목적으로 개발되었다

- JPA(Java Persistence API)

  • 현재 자바 진영의 ORM 기술 표준으로, 인터페이스의 모음이다.
    • 즉 실제로 동작하는 것이 아니다
    • JPA 인터페이스를 구현한 대표적인 오픈소스가 Hibernate 라고 할 수 있다.

References (참고 자료)

0개의 댓글