ORM

ORM이란 무엇인가요?

  • ORM(Object Relation Mapping)

  • ORM이란 객체와 테이블을 매핑시켜 데이터베이스의 테이블을 객체지향적으로 사용하게 해주는 기술이다.

  • 관계형 데이터베이스에서 테이블은 상속, 다형성 같은 객체지향적 특성이 없어 Java와 같은 객체지향적 언어로 접근하는 것이 쉽지 않다.

  • ORM을 사용하면 객체지향적으로 RDB를 사용할 수 있다.

  • 자바는 JPA라는 자바 진영의 ORM 표준 인터페이스를 사용하고, 대표적인 구현채로 Hibernate가 있다.

ORM, JPA, Hibernate 장단점

  • [장점]

    • 기본적인 CRUD는 이미 구현되어 있기 때문에 비즈니스 로직에 집중하고 객체중심의 개발을 할 수 있다.

    • 메서드 호출만으로 쿼리가 전달되기 때문에 생산성이 향상되고, 유지보수 비용이 줄어든다.

    • 특정 DB에 의존하지 않는다.

  • [딘점]

    • 직접 SQL을 호출하는 것보다는 느리다.

    • 복잡한 쿼리(동적 쿼리)는 메서드만으로 처리가 힘들다.

      • MyBatisQueryDSL을 사용해 동적 쿼리 문제를 해결할 수 있다.

MyBatis와 JPA를 비교해 주세요.

MyBatis

  • [장점]

    • 복잡한 쿼리 또는 특정 데이터베이스에 최적화된 쿼리 작성에 용이하다.

    • SQL을 직접 제어할 수 있기 때문에 SQL을 잘 아는 경우, JPA보다 학습에 용이하고 쉽게 사용이 가능하다.

  • [단점]

    • CRUD 같은 단순한 코드에 대해 반복적인 수작업이 필요하기 때문에 개발 생산성이 떨어지고, 유지보수도 힘들어진다.

    • 특정 DB에 종속적이기 때문에, DB 변경이 어렵다.

JPA

  • [장점]

    • Java의 표준을 이용하므로 특정 제품에 종속되지 않고, 일관된 방식으로 개발할 수 있다.

    • 객체와 테이블을 자동으로 매핑해주기 때문에 개발 생산성이 향상된다.

    • 특정 DB에 종속적이지 않아 DB 변경에 제약이 없다.

  • [단점]

    • MyBatis에 비해 배우기가 어렵다.

    • 복잡한 쿼리에는 적합하지 않다.

JPA의 장점이 가져다주는 이점이 너무 크기 때문에 최근에는 JPA를 많이 사용한다. 복잡한 쿼리를 만들기 어렵다는 단점도 QueryDSL 오픈소스를 활용하여 보완이 가능하다. 물론 필요에 따라 두 가지 기술 모두 사용할 수도 있다.

참고

Last updated