스프링 공부를 시작한지 꽤 되었다고 생각했는데 DB를 접근할 때 Mybatis밖에 써보지 않아서 항상 아쉬웠다. 그래서 꼭 hibernate를 써보고 싶은 로망이 있었다! (혼자하면 되는데 왜 안했지)
최근 친구의 제의로 새로운 프로젝트에 Spring 백엔드로 참가하기로 했다. 그 프로젝트에서 JPA를 사용한다고해서 공부할 겸 간단히 비교 및 사용법을 익히려고 한다.
드디어 JPA 공부합니다🤞
들어가기 전에 알고가면 좋은 것
SQL Mapper
SQL Mapper는 직접 SQL문을 작성해 DB를 접근하는 것이다.
Mybatis가 SQL Mapper에 해당한다.ORM (Object Relational Mapping)
DB의 데이터를 객체로 매핑시켜 데이터를 접근할 수 있는 것이다.
ORM을 사용하면 SQL을 작성하지 않고도 메소드를 사용해 데이터를 조작할 수 있다.
JPA, Hibernate 등이 해당한다.
Java에서는 DB에 접근할 수 있도록 JDBC라는 라이브러리를 제공한다.
JDBC는 학습이 쉬워서 처음 DB 접근을 배울 때 자주 사용된다.
그렇지만 사용할 때마다 Connection을 생성해줘야 하고, 중복되는 코드가 많아 실제 개발에는 잘 안쓰이는 느낌이다.
이 JDBC를 사용하기 쉽게 만들어주는 것이 Mybatis이다.
아까 말했듯, SQL Mapper에 해당한다. JDBC로 처리하는 부분의 일부를 코드와 파라미터 설정으로 매핑을 대신 해준다.
장점
+ 학습이 쉽다.
+ 소스코드와 sql을 분리할 수 있다.
단점
+ 반복적인 작업이 반복된다.
Java ORM 기술에 대한 API 표준 명세로, 이것 또한 Java에서 제공하는 API이다.
사용할 때 JPA, Spring Data JPA, Hibernate를 혼동하기 쉽다.
장점
+ CRUD 쿼리를 자동으로 생성해준다.
+ Entity에 속성만 추가해준다면 쿼리를 건들 필요가 없다.
단점
+ 상대적으로 학습이 어렵다.
+ 복잡한 쿼리 작성이 어렵다고 한다.
반복을 줄이고 객체지향적 설계를 위해서는 JPA를 사용하는 것이 JAVA에 조금 더 걸맞는 사용이라고 생각한다. Mybatis는 학습이 쉬우니 자주 사용하게 되는 것이고!