(JPA,SpringData) ORM 기본 개념 정리
13 Feb 2017 | jpa 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문을 쓰는게 더 나을때
Comments