728x90
반응형
객체와 DB의 테이블을 Mapping 시켜 RDB 테이블을 객체지향적으로 사용하게 해주는 기술입니다.
RDB테이블은 객체지향적 특성(상속, 다형성, 레퍼런스) 등이 없어서 Java와 같은 객체지향적 언어로 접근하기 어렵습니다.
JAVA에서 사용하는 대표적인 ORM으로 JPA와 그 구현체 Hiberante가 있습니다.
JPA에 이전에는 MyBatis라는 Object Mapping 기술을 이용했습니다.
MyBatis는 JAVA 클래스 코드와 직접 작성한 SQL코드를 Mapping 시켜주어야 했습니다.
반대로 JPA와 같은 ORM 기술은 객체가 DB에 연결되기 때문에 SQL을 직접 작성하지 않고 표준 인터페이스 기반으로 처리합니다.
간단히 객체가 테이블이 되도록 매핑시켜주는 것을 말합니다.
ORM을 이용하면 SQL Query가 아닌 직관적인 코드(메서드)로서 데이터를 조작할 수 있습니다.
JPA
JAVA ORM 기술에 대한 API 표준 명세를 의미합니다.
JPA는 ORM을 사용하기 위한 인터페이스를 모아둔 것이며 JPA를 사용하기 위해서는 JPA를 구현한 Hibernate, EclipseLink, DataNucleus 같은 ORM 프레임워크를 사용해야 합니다.
MyBatis VS Hibernate
- 대한민국은 대부분 SI, 금융이기 때문에 비지니스가 매우 복잡하고 안정성, 속도를 중요시하기 때문에 MyBaits가 좋을 수 있습니다.
- MyBatis는 쿼리를 직접 작성해야 하기 때문에 Hibernate에 능숙해지면 생산성을 상당히 높일 수 있습니다.
- JPA를 사용하면 통계, 동적 쿼리 같은 복잡한 쿼리를 처리하는 것이 어려워 QueryDSL를 함께 이용합니다.
- MyBatis와 Hibernate 모두 각각의 특징을 갖고 있어 상황에 맞는 적합한 ORM을 사용하는 것이 중요합니다.
JPA를 사용해야 하는 이유
- 엔티티에 맞는 테이블 생성 + DB 생성의 편리
- 설정에 따라 매핑된 객체를 바탕으로 테이블을 자동으로 만들어줍니다.
- 자동 생성되는 이름이 가독성이 떨어져서 이대로 사용하기에는 부족하지만 직접 모든 DDL을 작성하는 것보다는 편리함으로 제공합니다.
- 객체 지향 중심의 개발
- 객체를 이용하면 우리는 테이블에 매핑되는 클래스를 더욱 객체 지향적으로 개발 가능 합니다.
- 이러한 방향이 객체 지향 언어인 JAVA에 맞습니다.
- 테스트 작성 용이
- Repository 계층은 데이터베이스와 데이터를 주고 받는 계층이므로 단위 테스트로 작성하기보다 DB와 연결하여 실제 쿼리를 날리는 통합 테스트로 진행하는 것이 좋습니다.
- JPA는 테이블을 자동으로 만들어서 테스트를 작성하기에 매우 좋습니다.
- 기본적인 CRUD 자동화
- 테이블과 객체를 매핑 시키는 기술이므로 기본적인 CRUD가 제공됩니다.
- MyBatis를 이용한다면 간단한 CRUD 쿼리들 모두 작성해주어야 하는 것에 반해 JPA를 이용하면 생산성이 높일 수 있습니다.
- DBMS에 대한 코드 종속성이 줄어듦
- 데이터베이스에 종속적이지 않아서 데이터베이스가 변경되더라도 JPA가 해당 데이터베이스에 맞는 쿼리를 알아서 생성해 줍니다.
728x90
반응형
'백수 > Spring' 카테고리의 다른 글
페이징 처리 (0) | 2024.02.25 |
---|---|
비주얼 스튜디오 코드 프로젝트 생성 기본 설정 (0) | 2023.10.18 |
영속성(Persistence) (0) | 2023.06.20 |
Spring 프레임워크 (0) | 2023.05.31 |
어노테이션 기초 정리 (0) | 2023.05.30 |