[도서 리뷰] - 자바 ORM 표준 JPA 프로그래밍

DevHwan·2023년 1월 26일
0

들어가며

국내의 스프링을 사용하여 서버 개발을 시작하는 사람들에게 바이블이 아닐까 싶을 정도로 유명한 책이다. ( 처음 서점에 가서 구매할 때 표지보고 뭐가 잘못된 줄 알았던 나.. ) 나 역시 인프런에서 김영한 개발자님의 강의를 많이 접하였고, 강의에 이어 책까지 정독하게 되었다. 개발에만 몰두하다 보면 이론적인 부분을 놓치고 지나가는 때가 많은 데 이론 중에 핵심적인 내용만을 압축하여 정리한 것 같은 책이다. 각 장 마다 JPA의 주요 기술에 대한 이론적인 부분과 실습을 이야기하는 데, 본 리뷰에서는 실습은 전부 제외하고 이론적인 내용만 정리하고자 한다. ( 근데 개인 생각을 곁들인.. ) 모든 내용을 포함하지 않고 아주 중요하고 핵심이라고 생각하는 부분만을 정리했다.

패러다임의 불일치

패러다임은 어떤 한 시대 사람들의 견해나 사고를 근본적으로 규정하고 있는 테두리로서의 인식의 체계, 또는 사물에 대한 이론적인 틀이나 체계를 의미하는 개념이다. ( 토머스 쿤 )

여기서 말하는 패러다임의 불일치는 바로 데이터베이스와 객체의 체계의 불일치이다. 이를 이해하기 위해서는 기본적으로 데이터베이스와 객체에 대한 이해가 필요하다. 현대의 대부분의 애플리케이션은 객체지향언어로 개발된다고 봐도 무방하다. ( 유명하거나 그렇지 않거나.. )
패러다임이 일치하지 않는 이유는 근본적으로 둘의 존재 목적이 다르기 때문이다.

데이터 베이스는 데이터를 중심으로 구조화되어 집합적이다.

객체지향언어는 추상화, 상속, 다형성들을 지원하여 객체를 만들고 조직하고 관계를 맺는다. ( 이것을 참조라고 한다. )

각각은 아래와 같은 특징에서 차이를 보인다.

  • 상속
    객체에서는 상속이 존재하고, 관계형 데이터베이스에는 존재하지 않는다. ( 일부 데이터베이스에서는 상속을 지원하지만 객체에서의 상속과는 결이 다른 상속이다. )

  • 연관관계
    객체는 참조를 이용하고, 데이터베이스는 외래 키를 이용한 조인을 사용하여 연관된 테이블을 조회한다.

  • 객체 그래프 탐색
    객체에서 참조를 사용하여 연관된 객체를 탐색하는 것을 객체 그래프 탐색이라 한다. 이것은 객체의 연관관계에 따라 결정된다. ( 어디까지 연결이 되어있는 지가 중요하겠다. ) 그러나 데이터베이스의 경우 실행되는 SQL에 따라 탐색할 수 있는 범위가 제한된다.

  • 비교
    객체에서는 동일성, 동등성 비교를 지원하고 데이터베이스에서는 식별자 값을 이용하여 각 ROW를 비교할 수 있다.

주요한 차이점들로 인하여 객체를 데이터베이스 모델에 맞추어 모델링 하려고 하면 많은 비용이 발생한다. JPA는 패러다임의 불일치 문제를 돕고, 졍교한 객체 모델링을 돕는다.

JPA란

JavaPersistenceAPI의 줄임말로 자바 진영에서 사용하는 ORM 기술 표준이다. 해당 기술은 애플리케이션과 데이터베이스 사이에서 커넥션에 관여하는 JDBC API 사이에 작동한다. ( 패러다임의 불일치를 줄이는 역할을 한다. )

ORM은 Object-Relational Mapping 으로 객체와 관계형 데이터베이스를 매핑한다. ORM 프레임워크 중 가장 많이 사용되는 것은 하이버네이트 프레임워크이다. ( 본인은 하이버네이트만 사용해 보았다. )

JPA(ORM) -> 하이버네이트

JPA의 장점들로는 다음과 같다.

  • 생산성

  • 유지보수

  • 패러다임의 불일치 해결

  • 성능

  • 데이터 접근 추상화와 벤더 독립성

    • 관계형 데이터베이스 마다 사용법이 다른 경우가 많은데 애플리케이션과 데이터베이스 사이에 추상화된 데이터 접근 계층을 제공하여 애플리케이션이 특정 데이터베이스 기술에 종속되지 않도록 한다. ( 데이터베이스 종류에 상관없이 작동할 수 있다는 의미이다.)

마무리

아~~주 아주 기본적인 내용이지만 모르면 절대 안되는 핵심적인 내용만 정리해보았다. 김영한 개발자님이 없었다면 공부하는 게 배는 힘들지 않았을까? 라는 생각을 하면서 글을 마친다. ( 감사합니다.. )

해당 글은 김영한 개발자님의 "자바 ORM 표준 JPA 프로그래밍" 도서 리뷰입니다.

profile
달리기 시작한 치타

0개의 댓글