(JPA,SpringData) ORM 기본 개념 정리

|

여러 게시글들을 기반으로 정리해 보았습니다.

ORM(Object-Relational Mapping)이란?

  • 객체(Object)와 관계형 데이터베이스(Relational)의 관계 설정을 자동으로 처리해줍니다.
  • 실제 데이터와 객체와의 개념적 일치하지 않는 부분을 자동으로 매핑해주는데 ResultSet을 받아 Bean에 열심히 넣어주던것을 대신해주는 것과 비슷하게 생각하면 됩니다.
  • 관계형 데이터베이스의 데이터를 객체형 데이터처럼 사용할 수 있습니다.

ORM의 장점

  • 데이터베이스 종류에 제약을 최대한 받지 않습니다.(Native Query 사용시 무효)
  • 객체 중심으로 설계하기 때문에 좀 더 직관적이고 빠르게 개발할 수 있습니다.
  • 객체 지향적 설계로 인해 좀 더 직관적이고 비지니스로직에 집중할 수 있으며 생산성,유지보수성이 향상됩니다.

ORM의 단점

  • 모든 기능을 ORM으로만 작성하기에는 쿼리가 복잡해지면 쓰기 어렵습니다.(통계, 데이터분석등…)
  • 성능이슈, 몇몇 글에 따르면 ORM을 사용시 느리다는 평이 있습니다.
  • SP를 많이 쓰거나 기존 SQL문이 많은 프로그램에는 객체지향의 장점을 활용하기 어렵습니다.

ORM에 적합한 모델

  • Entity를 개별적으로 업데이트
  • 간헐적으로 Set기반 작업 수행 (ex: 고객 레코드및 주문내역을 개별적으로 업데이트)

ORM에 적합하지 않은 모델

  • 많은 수의 레코드를 잦은 빈도로 벌크 업데이트 수행
  • 통계, 데이터분석처리(OLAP)
  • 이미 작성된 핸드코딩/프로시저를 이용하는 환경(MyBatis를 쓰면 좋다, 다른 ORM도 이런부분을 지원합니다.)
  • 순수 SQL문을 쓰는게 더 나을때

참고

ORM (Object Relation Mapping) ORM 의 장점과 단점

Comments