프리 정보 컨텐츠

자바 표준 ORM과 JPA 개념이란? 본문

JAVA/JPA

자바 표준 ORM과 JPA 개념이란?

쏜스 2021. 6. 24. 18:23

JPA의 개념을 정리하기 앞서 IT 국비교육에서 스프링을 처음 배울 때는

MyBatis를 통하여 SQL 매퍼를 이용하여 DB의 쿼리를 작성했습니다. 

 

하지만 실제 일일 구직 사이트를 팀프로젝트로 구축함에 있어 테이블이 10개 이상이 넘어갈수록

SQL을 만들고 유지보수해야만 했었습니다. 이를 보완할 수 있는 방법이 바로 기능과 속성을 한 곳에서 관리 할 수 있는 JPA라는 자바 표준 ORM(object Relational Mapping) 기술입니다.

 

자사 서비스를 개발하는 곳에서는 SpringBoot와 JPA를 전사 표준으로 사용한다는 사실을 접하고 개인적으로 SpringBoot 개발환경에서 JPA를 사용하는 방법과 개념을 알아보겠습니다.

 

JPA 개념정리

 

JPA 개념

  • JPA는 인터페이스로서 자바 표준 명세서입니다. 여기서 인터페이스란 특정 기능을 하는 라이브러리 기능을 하는게 아닌 백엔드 API가 클라이언트를 어떻게 서버를 사용해야 하는지 정의한 것처럼, JPA 역시 자바 어플리케이션에서 관계형 데이터베이스를 어떻게 사용해야하는지 정의하는 한 가지 방법일 뿐입니다.
  • JPA는 상속, 1:N등 다양한 객체 모델링을 데이터베이스로 구현할 수 없기에 웹 어플리케이션 개발은 데이터 베이스 모델링에 집중하게되었습니다. 즉, 객체지향 프로그래밍 언어와 관계형 데이터베이스를 중간에서 패러다임 일치를 시켜주기 위한 기술이며, 객체 지향적으로 코드를 표현할 수 있으므로 SQL에 종속적인 개발이 필요하지 않습니다. 
  • 대표적으로 JPA는 Hibernate, Eclipse Link 등이 있지만 이 글에서는 이런 구현체들을 좀 더 쉽게 사용하고 추상화시킨 Spring Data JPA에 대해서 알아보겠습니다.

ORM(object Relational Mapping) 개념이란??

ORMORM... 객체-관계 매핑?? 이란 뜻은 정확히 무엇일까요?

Mybatis로 SQL을 통해서만 사용해왔기에 jdbc를 무조건 써야된다는 생각뿐이었습니다. 표준 ORM은 기존 데이터 베이스 모델링과는 어떤 차이가 있을까요??

 

차이점은 아래와 같습니다.

SQL Mapper

  • SQL  ← mapping → Object 필드
  • SQL문 테이블을 통해 직접 DB를 조작함
  • ex) Mybatis

ORM

  • DB ← mapping → Object 필드
  • 객체와 디비 데이터를 자동 매핑해줌
  • SQL 쿼리가 아닌 메서드로 데이터 조작 가능
  • 객체간 관계를 바탕으로 SQL자동 생성
  • ex) JPA, Hibernate

결론은 ORM을 사용함으로써 유지 보수가 편리하고 대규모 트래픽과 데이터를 가질 수록 JPA중 Spring Data JPA를 사용하는 추세라고 말할 수 있습니다.

 

JPA, ORM 개념은 알겠습니다.. Spring Data JPA는 무엇인가요?

Spring Data JPA 개념

Spring에서 JPA를 사용할 때는 Hibernate 구현체를 직접 다루지는 않습니다. 좀 더 쉽게 사용하고자 추상화시킨

Spring Data JPA라는 모듈을 이용하여 JPA를 다룹니다. Spring Data JPA에 대한 자세한 개념은 동작 과정, 예제를 통해서 알아보겠습니다. 우선 이들의 관계는 아래와 같습니다.

 

JPA <- Hibernate <- Spring Data JPA

Hibernate가 있는데 왜 Spring Data JPA를 사용할까요?

간단하게 요약하면

 

  • 구현체 교체의 용이성
  • 저장소 교체의 용이성

프로그래밍은 트랜드에 맞게 대세가 자주 바뀌는데 다른 저장소로 쉽게 교체하기 위함이며 관계형 데이터베이스로는 감당이 안되기때문에 쉽게 의존성만 교체해주기 위함입니다.

 

Spring Data의 하위 프로젝트들은 기본적인 CRUD의 인터페이스와 같아 save(), findAll, findOne() 등을 인터페이스로 갖고 있습니다.  기본적인 기능은 변경할 필요가 없으므로 Hibernate를 직접 쓰지않고 Spring Data 를 권장합니다.

 

하지만 JPA를 사용하는 단점으로는 높은 러닝 커브를 많이 얘기합니다. JPA를 잘쓰려면 객체지향 프로그래밍과 관계형 데이터베이스 둘 다 이해해야하므로 현재 실무에서 JPA는 주목받지만 사용하지않는 기업도 많습니다.

JPA 동작 과정

JPA 동작 과정

JPA는 JAVA 애플리케이션과 JDBC 사이에서 동작합니다.

개발자가 JPA를 사용하면, JPA 내부에서는 JDBC API를 통해 SQL을 호출하고 DB와 통신합니다.

JPA 의 대표적인 예) Insert

Insert

DAO의 관계에서 객체를 저장하고 싶을 때 JPA에 Member 객체를 넘깁니다.

 

그럼 JPA는 Entitiy분석 -> INSERT SQL 생성 -> JDBC API를 사용하여 SQL을 DB에 날립니다.

 

객체가 실제로 사용되는 코드는 아래에 구체적인 예제에서 상세하게 알아보겠습니다.

Spring Data JPA 코드 활용

 

Comments