Spring MyBatis와 JPA

jwoo·2018년 12월 18일
4
post-thumbnail

현재 인턴을 진행하고 있는 곳에서 스프링과 MyBatis를 처음으로 경험해보았습니다.

이전까지는 학교 수업중에 실습으로 JDBC를 사용하여 데이터베이스를 CREATE, READ, UPDATE, DELETE 해본게 전부 였지만 확실히 MyBatis 를 이용한 데이터의 접근 및 초기 설정이 더 편리하다는 느낌을 받았습니다.

이후 혼자 공부를 해오던 와중에 Spring JPA 혹은 Hibernate라고 불리우는 기술이 많이 쓰이고 있고 개발 속도도 더 빠르다는 점이 흥미로워 공부 겸 글을 작성해보려 합니다.

MyBatis

MyBatis를 처음 공부할 당시에는 iBatis라는 단어가 구글 검색 결과에 항상 같이 나와서 의아했습니다. 알고보니 iBatisMyBatis 가 Google Code로 이전하기 이전에 Apache Foundation 소유일 때의 이름이었다고 합니다.

둘의 차이점은 MyBatis 에서는

  • JDK 1.5, Annotation

  • 다이나믹 SQL 지원

    등의 차이점이 있다고 합니다.

MyBatis 는 SQL Mapper를 이용하여 자바의 객체를 SQL문과 연결하여 빠르고 편리하게 데이터베이스에 접근할 수 있게 해줍니다.

MyBatis 를 프로젝트에 적용하는 방법은

  1. XML파일을 이용하는 방법
  2. Annotaion을 이용하는 방법

이 있습니다. 보통 복잡한 쿼리는 XML을 이용하는 방법이, 간단한 쿼리는 Annotation을 이용한 방법이 더 적합합니다.

JPA, Hibernate

JPA를 사용하는 건 ORM 을 사용한다는 것이라고 합니다. Node JS로 치면 Sequalize 라이브러리와 같은 역할이라고 일단은 이해했습니다. ( Sequalize를 사용한 경험이 없는 분은 이해가 어려울지도....)

이러한 ORM을 사용하면 쿼리문을 보통 직접 작성할 일이 거의 없습니다. 그래서 MyBatis에 익숙한 사람들에게는 뭔가 추상적이고 부정적으로 느껴질수도 있을 것 같지만 실제로 사용해보면 MyBatis에 비해 생산 속도가 매우 빠르다고 합니다. 아무래도 MyBatis에서는 XML 파일을 넘나들면서 Mapper를 모두 작업해줘야 하기 때문인 것 같습니다.(저도 아직 사용은 안해봐서...추측입니다 )

하지만 이런 JPA에도 단점은 있습니다. 대표적 단점으로는

  • 성능

    대부분의 ORM이 그러하듯 실제 SQL문을 직접 작성하는 것보다는 성능이 비교적 떨어질 수 있습니다.

  • 세밀함

    복잡한 상황에서 데이터를 조작하기에 어려움이 있습니다. 이를 보완하기 위해 직접 SQL문을 작성할 수도 있고, JPQL이라는 것도 지원하고 있기는 합니다.

  • 한국과 중국에서는 MyBatis보다는 비교적 사용되지않는 듯....??!

    대부분의 블로그 및 사이트를 검색해본 결과 , 한국/중국/인도를 제외한 외국에서는 JPAMyBatis 보다 많이 사용하고 있다고 합니다. 이유가 뭔지는 정확히는 모르지만 다양한 의견들이 있는 것 같습니다.

정리

ORM 을 사용하는 것이 무작정 좋다고 할 수는 없지만 생산성도 좋고, 외국에서도 많이 사용한다고 하니 한번쯤은 꼭 배우고 넘어가는 것이 좋겠다는 생각이 들었습니다.

아직 MyBatis도 부족한 부분이 많지만 미래에 제가 입사할 회사( 어디가 될지는 모르지만... )에서는 무엇을 사용하게 될지 아무도 모르는 일이니 한번 배워보는 것이 좋을 것 같습니다.

다음에는 JPA를 적용하는 방법에 대하여 포스팅을 해보겠습니다.........................아마도....?!

HibernateMyBatis의 사용에 대한 외국 친구들의 생각은

[]: https://stackoverflow.com/questions/1984548/hibernate-vs-ibatis

여기를 참고해주시고, 우리나라 분들의 의견은

[]: https://okky.kr/article/286812

를 참고해주세요!

아직 모르는게 많아 게시글에 잘못된 정보가 있을 수 있습니다. 혹시 잘못된 정보가 있다면, 댓글 혹은 메일로 알려주시면 최대한 빨리 수정하겠습니다!

profile
공부하는 학생입니다

2개의 댓글

comment-user-thumbnail
2018년 12월 18일

잘봤어요~

답글 달기
comment-user-thumbnail
2020년 7월 11일

잘봤어요~

답글 달기