1. JPA (Java Persistence API)

 

Java ORM 기술에 대한 API 표준 명세로 JPA만 가지고는 해당 기술을 적용할 수 없으며

Hibernate, Spring Data JPA 등 대표적인 오픈 소스를 사용해야 합니다.

 

객체 관계 매핑, 객체와 RDB를 별개로 설계하고 ORM이 중간에서 매핑해주는 역할

즉, ORM은 SQL문이 아닌 RDB에 데이터 그 자체와 매핑하기 때문에 SQL을 직접 작성할 필요가 없다.

해당 객체와의 매핑에 필요한 SQL문을 알아서 만들어준다.

 

장점

1) 데이터베이스에 종속되지 않아 추후 데이터베이스 변경이나 코드 재활용이 가능하다.

2) 테이블 생성, 변경 등 엔티티 관리가 간편하다.

3) 컴파일 시, 오류를 확인할 수 있다.

4) 코드 레벨로 관리되므로 사용하기 용이하고 생산성이 높다.

 

 단점

1) 복잡한 연산을 수행하기에는 다소 무리가 있다. 

    : 초기에는 생산성이 높을 수 있으나, 운영 시 성능상 이슈가 발생할 수 있음

2) 시스템이 고도화 될수록 학습 곡선이 높아질 수 있다.


2. MyBatis (Java Persistence Framework)

 

MyBatis는 SQL Builder 또는 SQL Mapper의 한 종류로 SQL, 저장 프로시저 매핑을 지원하는 Framework입니다. 

즉 SQL문을 이용하여 데이터베이스에 접근, 데이터를 오브젝트(객체)화 시켜주며 record에 원시 타입과 Map 인터페이스, 

그리고 자바 POJO를 설정해서 매핑하기 위해 xml과 Annotation을 사용할 수 있습니다.

 

장점

1) SQL 쿼리를 직접 작성하므로 쉽게 최적화된 쿼리를 구현할 수 있다.

   : 복잡한 SELECT를 하기 위한 Join, 튜닝 등을 쉽게 적용 가능

2) 엔티티에 종속받지 않고 다양한 테이블을 조합할 수 있다.

3) 동적 쿼리 사용 시 JPA보다 간편하게 구현 가능하다.

 

 단점

1) 스키마 변경 시 관련된 SQL 쿼리를 직접 수정해주어야 한다.

2) 런타임 시, 오류를 확인할 수 있다.

3) 쿼리를 작성하기 때문에 특정 데이터베이스에 종속적이다.

 


3. 결론

 

시스템 구현 시 프로젝트 규모가 작다면 둘 중 하나를 사용해도 무방하지만 프로젝트 규모가 크다면 JPA와 Mybatis를

둘 다 사용해야 안정적인 서비스를 제공할 수 있습니다.

: (INSERT, UPDATE, DELETE ) SpringData JPA 사용

: (SELECT) MyBatis 사용

 

 

레퍼런스

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기