JDBC vs SQL Mapper(Mybatis) vs ORM(JPA)

sangyong·2024년 3월 25일
0

Java

목록 보기
3/3

JDBC vs SQL Mapper(Mybatis) vs ORM(JPA)

Java 개발자로 일하고 공부하며 JDBC와 JPA, Mybatis는 다 사용해봤지만, 이들의 차이점이 정확히 무엇인지, 어떨 때 사용하는 것이 좋을지 고민을 해본 적이 없어서 이번 기회에 정리해보려고 한다.

JDBC(Java Database Connectivity)는 Java에서 DB에 접근하기 위해 만든 API이다.

JDBC는
1. DriverManager를 통해 Connection을 가져온다.
2. Statement를 이용하여 쿼리를 실행한다.
3. resultSet으로 결과를 리턴받는다.
4. 연결을 종료한다.
위의 4단계의 과정을 통해 사용자가 직접 커넥션을 관리해줘야 하고 DB별로 예외처리를 해줘야 하며, 직접 작성해야하는 코드, 중복되는 코드가 많다는 단점을 가지고 있습니다.

위의 불편함을 해소하고 자동으로 처리해주기 위해 SQL Mapper이 먼저 등장합니다.

SQL Mapper vs ORM

SQL Mapper와 ORM의 공통점

  • 둘 다 데이터베이스에 접속하여 실행한 결과를 객체에 매핑시켜주는 것이다.

SQL Mapper와 ORM의 차이점

  • SQL Mapper(Mybatis, Spring JDBC Template)는 '개발자가 작성한 쿼리의 실행 결과를 객체에 매핑' 시켜주는 프레임워크
  • SQL Mapper는 개발자가 직접 작성해야 하기 때문에 DBMS에 종속적이다.(DBMS마다 문법이 다르기 때문에) -> 테이블마다 비슷한 CRUD SQL 작업이 반복되고, 테이블 필드가 변경될 시 이와 관련된 모든 SQL문, 객체 필드 등을 수정해야 한다는 단점.
  • ORM(JPA)는 객체와 DB의 데이터를 '자동으로 매핑' 시켜주는 프레임워크

Spring JDBC Template! 이것 때문에 JDBC와 SQL Mapper가 계속 헷갈렸구나!

ORM이 최고인가?

ORM의 장점

  • 객체지향 언어의 장점인 추상화, 상속, 다형성 등의 장점을 취할 수 있다.
  • 반복적인 SQL문(CRUD)를 개발자가 작성하지 않아도 된다.
  • DBMS에 독립적이다.
  • 유지보수가 쉽다.(SQL 쿼리를 직접 수정하지 않고 엔티티를 수정하면 되기 때문)

ORM의 단점

참고
https://mysterlee.tistory.com/49
https://www.elancer.co.kr/blog/view?seq=231
https://www.youtube.com/watch?v=VTqqZSuSdOk
https://velog.io/@imcool2551/JPA-%EC%84%B1%EB%8A%A5-%EC%B5%9C%EC%A0%81%ED%99%94

profile
최적의 방법을 찾는 개발자

0개의 댓글