Java 개발자로 일하고 공부하며 JDBC와 JPA, Mybatis는 다 사용해봤지만, 이들의 차이점이 정확히 무엇인지, 어떨 때 사용하는 것이 좋을지 고민을 해본 적이 없어서 이번 기회에 정리해보려고 한다.
JDBC는
1. DriverManager를 통해 Connection을 가져온다.
2. Statement를 이용하여 쿼리를 실행한다.
3. resultSet으로 결과를 리턴받는다.
4. 연결을 종료한다.
위의 4단계의 과정을 통해 사용자가 직접 커넥션을 관리해줘야 하고 DB별로 예외처리를 해줘야 하며, 직접 작성해야하는 코드, 중복되는 코드가 많다는 단점을 가지고 있습니다.
위의 불편함을 해소하고 자동으로 처리해주기 위해 SQL Mapper이 먼저 등장합니다.
SQL Mapper와 ORM의 공통점
SQL Mapper와 ORM의 차이점
Spring JDBC Template! 이것 때문에 JDBC와 SQL Mapper가 계속 헷갈렸구나!
ORM의 장점
ORM의 단점
성능 이슈 (참고 : https://velog.io/@imcool2551/JPA-%EC%84%B1%EB%8A%A5-%EC%B5%9C%EC%A0%81%ED%99%94)
높은 러닝 커브
복잡한 쿼리 사용이 어렵다? -> JPQL을 사용하여 직접 쿼리작성도 가능하고 SQL Mapper와 혼용해서 사용도 가능하다.
참고
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