발전하는 개발자가 되자
Mybatis 와 JPA 비교 본문
Mybatis 와 JPA
- Mybatis 특징
- JPA 특징
Mybatis
JDBC
를 좀더 편하게 사용할 수 있도록 객체를 SQL 이나 저장 프로시저와 매핑 해주는 퍼시스턴스 프레임워크 SQL 구문을 java 메소드와 매핑해준다.
장점
- 다른 프레임워크에 비해 간단하다.
- 소스 코드와 SQL 의 분리 (생산성, DBA와의 협업)
- SQL을 직접 다뤄 복잡한 쿼리 작성, SQL 함수나 저장 프로시저를 자유롭게 이용가능
단점
- 반복적인 코드와 CRUD SQL 작업
- SQL과 데이터베이스 벤더에 대한 종속성(오라클에서 mySQL 로 바꾸면 함수들을 바꿔줘야한다.)
ORM(JPA)
자바 객체를 데이터테이블과 매핑시킨다.ORM
: 데이터베이스 객체를 자바 객체로 매핑하여 객체 간의 관계를 바탕으로 SQL을 자동으로 생성JPA
: 자바 진영의 ORM 표준 기술
장점
- 생산성 CRUD 같은 간단한 쿼리는 자동으로 된다.
- entity 에 추가 속성이 생기면 Mybatis 의 경우 쿼리에 각각 다 추가해줘야하지만 JPA는 Entity에 속성만 추가 시켜주면 된다.
- 데이터 접근 추상화 벤더 독립성
- SQL 중심적인 개발에서 객체 중심으로 개발가능
단점
- 상대적으로 높은 학습 곡선
- 복잡한 쿼리작성의 어려움
- JPQL을 통해 해결가능
- Native SQL로 직접 작성가능
- mybatis 와 혼용가능
결론
JPA를 사용하면 mybatis 를 사용할 때 보다 아래 그림과 같이 중복을 제거할 수 있다.
그리고 더 나은 객체지향적 설계가 가능하다.
하지만 학습비용이 높다. 그러므로 아직은 mybatis와 JPA를 혼용 하면서 좀더 나은 코드로 발전시키면 될 것 같다.
참고
Comments