데이터 접근 기술과 JPA

Junyeong·2022년 1월 28일
0

자바와 친구들

목록 보기
3/5

데이터베이스에 접근하는 방법

기본적으로 자바를 사용한다면 JDBC라는 녀석을 통해 데이터에 접근하는 거라는 사실은 모두가 알거라고 생각한다.
JDBC 에서 template 를 거쳐서 batis.. jpa... 그런 역사는 각설하고 나는 데이터접근 기술을 두가지로 보고 있다.
(아는게 두개다)

  • SQL Mapper
  • ORM

SQL Mapper

말 그대로 SQL를 매핑시켜주는 방법이다.
직접 SQL을 작성하고 이걸 사용해서 RDB에 접근한다.
대표적인 프레임워크로는 MyBatis가 있다.

MyBatis는 자바에서 SQL매퍼를 지원해주는 프레임워크이다.
XML에 각각의 쿼리들을 잔뜩 써두고 객체화시켜서 필요한 로직에서 불러다가 사용하는 방식이다.

나는 마이바티스를 직접 공부한 적이 없다. 회사에서 프로젝트를 하면서 통계 쿼리를 작성했는데 ORM 으로만 처리하기엔 애매해서 마이바티스를 처음 써봤다.

내가 MyBatis를 경험하면서 느낀 장점은 다음과 같다.

  • 개발이 편하다. (쿼리작성해보고 되면 그대로 복붙하면 끝나니까)

그리고 단점은 다음과 같다.

  • 그 쿼리에 문제가 생기면 다 실행해가면서 원인을 찾아야한다.
  • 버전 업데이트로 인한 쿼리 수정시에 너무 귀찮다.

종합해보면, 유지보수와 가독성이 너무 떨어진다는 것이다.
일하면서 느낀건데 코드라는게 한번 쓰고 말 것이 아니기 때문에 계속해서 보기 편한지가 너무 중요하다.
그런 관점에서 SQL Mapper는 상당히 불리하다고 생각한다.

책에서 읽은 단점은 다음과 같다.

  • 진정한 의미의 계층 분할이 어렵다.
  • 엔티티를 신뢰할 수 없다.
  • SQL 의존적인 개발을 피하기 어렵다.

ORM

데이터에 접근할 때 객체지향을 유지하도록 도와준다.
오브젝트-릴레이셔널-매핑의 약자인데, 즉 객체와 데이터간의 연결이라고 할 수 있다.
이렇게 되면 위의 매퍼 방식에서 단점으로 써둔 것들을 모두 역전시켜서 장점으로 승화시킬 수 있다.

ORM에 대한 이론적인 설명은 각설하고 자바 ORM 기술의 대표주자인 JPA에 대해 알아보자. 결국 JPA에 대한 설명이 ORM기술에 대한 설명이 될테니까.


JPA 사용 이유

  • 생산성 (반복작업을 줄일 수 있다.)
  • 유지보수 (전체 코드가 줄어드니 유지보수가 편해진다.)
  • 패러다임 불일치 해결 (데이터베이스와 객체지향의 불일치를 해결)
  • 데이터접근 추상화와 벤더 독립성 (디비 교체에도 문제 없다.)
  • 성능 (이게 가장 핵심)

성능이 나에겐 가장 중요한 관심사였다.
다른건 몸으로 겪어봐서 알겠는데 성능이 실제 괜찮나? 이건 모르니까.

책에 따르면 애플리케이션과 데이터베이스 사이에서 다양한 성능 최적화 기회를 제공하기 때문에 오히려 성능이 우수하다고 한다.

아마 이후의 설명들과 예제들을 보면서 자연스레 이해될 것으로 생각한다.


profile
좋아하는 것을 계속 좋아하자.

0개의 댓글