ORM(Object-Relational Mapping)

김휘진·2023년 2월 2일
0

Java

목록 보기
2/5

ORM

  • ORM이란 JPA의 기술 표준으로써, Object-Relational Mapping 이라는 뜻으로 Class와 RDB(Relational DataBase)의 테이블을 매핑(연결)해준다.

  • 기술적으로 보면 애플리케이션의 객체를 RDB 테이블에 자동으로 영속화해준다고 볼 수 있다.

영속화

  • 위에서 말한 영속화는 영속성을 부여해 주는 것을 뜻한다.

그렇다면 영속성이란 무엇일까?
데이터를 생성한 프로그램이 종료되더라도 사라지지 않는 데이터의 특성이다.
기존의 영속성이 없는 데이터는 메모리 내에서만 존재하고 프로그램 종료 시 사라진다.

ORM이 객체에게 영속성을 부여해준다는 것까지는 알겠는데 그렇다면 ORM은 어떤 상황에 사용하면 좋을지 장단점을 알아보자!

장점

  • 객체와 테이블을 매핑해 패러다임의 불일치를 개발자 대신 해결해 준다.

    패러다임의 불일치: 데이터베이스는 데이터 중심으로 구조화 돼있어 객체의 상속, 다형성 같은 개념이 없기 때문에 서로 지향하는 점이 다른데 이 점을 패러다임의 불일치라고 한다.

  • Query와 같이 필요한 선언문이나 할당 등의 부수적인 코드가 줄어 객체에 대한 코드를 별도로 작성해 코드의 가독성을 높일 수 있다.

  • 메서드를 통해 DB를 조작할 수 있어서 개발자가 비즈니스 로직을 구성하는 데만 집중할 수 있다.

    내부적으로 쿼리를 생성하여 DB를 조작하지만 개발자는 신경 쓰지 않아도 된다.

  • 매핑정보가 Class로 명시되어 있어 ERD(Entity Relationship Diagram)를 보는 의존도를 낮출 수 있고 유지/보수 및 리팩토링에 유리

    예를 들어 MySQL 데이터베이스 사용 중 PostgreSQL로 변환 시 쿼리를 새로 짜야 하는 경우가 생김. 이런 경우 ORM을 사용하면 쿼리를 수정할 필요가 없다.)

  • 객체지향적 접근만 고려하면 되기 때문에 객체지향적인 코드 작성으로 생산성이 증가한다.

단점

  • 학습 비용이 비싸다.

  • 설계가 잘못된 경우 속도가 저하될 수 있고 일관성을 무너뜨릴 수 있다.

  • 더 빠른 속도를 위해서는 별도의 튜닝이 필요하기 때문에 결국 SQL 문을 써야 할 수도 있다.

profile
Don't give up, I can do (IT)

0개의 댓글