ORM
ORM이란 무엇인가요?
ORM(Object Relation Mapping)
ORM이란 객체와 테이블을 매핑시켜 데이터베이스의 테이블을 객체지향적으로 사용하게 해주는 기술이다.
관계형 데이터베이스에서 테이블은 상속, 다형성 같은 객체지향적 특성이 없어 Java와 같은 객체지향적 언어로 접근하는 것이 쉽지 않다.
ORM을 사용하면 객체지향적으로 RDB를 사용할 수 있다.
자바는
JPA라는 자바 진영의 ORM 표준 인터페이스를 사용하고, 대표적인 구현채로 Hibernate가 있다.
ORM, JPA, Hibernate 장단점
[장점]
기본적인 CRUD는 이미 구현되어 있기 때문에 비즈니스 로직에 집중하고 객체중심의 개발을 할 수 있다.
메서드 호출만으로 쿼리가 전달되기 때문에 생산성이 향상되고, 유지보수 비용이 줄어든다.
특정 DB에 의존하지 않는다.
[딘점]
직접 SQL을 호출하는 것보다는 느리다.
복잡한 쿼리(동적 쿼리)는 메서드만으로 처리가 힘들다.
MyBatis나QueryDSL을 사용해 동적 쿼리 문제를 해결할 수 있다.
MyBatis와 JPA를 비교해 주세요.
MyBatis
[장점]
복잡한 쿼리 또는 특정 데이터베이스에 최적화된 쿼리 작성에 용이하다.
SQL을 직접 제어할 수 있기 때문에 SQL을 잘 아는 경우, JPA보다 학습에 용이하고 쉽게 사용이 가능하다.
[단점]
CRUD 같은 단순한 코드에 대해 반복적인 수작업이 필요하기 때문에 개발 생산성이 떨어지고, 유지보수도 힘들어진다.
특정 DB에 종속적이기 때문에, DB 변경이 어렵다.
JPA
[장점]
Java의 표준을 이용하므로 특정 제품에 종속되지 않고, 일관된 방식으로 개발할 수 있다.
객체와 테이블을 자동으로 매핑해주기 때문에 개발 생산성이 향상된다.
특정 DB에 종속적이지 않아 DB 변경에 제약이 없다.
[단점]
MyBatis에 비해 배우기가 어렵다.
복잡한 쿼리에는 적합하지 않다.
JPA의 장점이 가져다주는 이점이 너무 크기 때문에 최근에는 JPA를 많이 사용한다. 복잡한 쿼리를 만들기 어렵다는 단점도 QueryDSL 오픈소스를 활용하여 보완이 가능하다. 물론 필요에 따라 두 가지 기술 모두 사용할 수도 있다.
참고
Last updated