Spring

[Spring Boot] JPA와 ORM

림 림 2020. 11. 5. 22:48
반응형

프로젝트를 수행하면서 JPA를 사용할 기회가 생겨 개념을 간단히 정리해보았습니다.

ORM이란?

Object-Relational Mapping의 약자로 객체와 관계형 데이터베이스를 매핑하는 것입니다.

 

JPA란?

JPA란 Java Persistence API의 약자로, Java에서의 ORM을 표준화한 API 명세입니다. 

JPA 이전에는 EJB(Enterprise Java Beans)라는 기술 표준에 포함된  Entity Bean이라는 ORM 기술을 사용했습니다. 그 당시에 Hibernate가 등장하고 인기를 끌었습니다. 그래서 Hibernate 기반으로 새로운 Java ORM 기술 표준이 만들어졌고 그것이 바로 JPA입니다.

 

Hibernate란?

JPA를 사용하려면 JPA를 구현한 ORM 프레임워크를 선택해서 사용해야 합니다. 다양한 ORM 프레임워크가 있는데, 그 중에서도 Hibernate가 JPA의 출발점이자 가장 대중적인 프레임워크입니다. 

 

JPA의 장단점

장점

  • 생산성과 유지 보수성이 좋다.
    쉽고 반복적인 SQL을 직접 작성하지 않아도 된다. DB 컬럼이 변경될 때 마다 수정해야 할 코드 가 적어진다. 
  • 패러다임의 불일치 문제를 해결해준다.
    패러다임의 불일치 문제란?
    객체는 객체 지향적으로 설계되어있고, 관계형 데이터베이스는 데이터 중심으로 구조화되어있다. 객체와 관계형 데이터베이스는 지향하는 관점도 다르고 기능과 표현 방법도 다르다. 이것을 패러다임의 불일치 문제라고 한다. 객체를 관계형 데이터베이스에 저장할 경우, 패러다임의 불일치 문제를 개발자가 해결해줘야 한다. 

 

단점

  • 복잡한 SQL을 사용할 때에는 QueryDSL을 사용하거나 SQL을 직접 작성해야될 수도 있다.
  • 잘못 사용할 경우 N+1 문제가 발생할 수 있고, 이는 성능 저하를 초래할 수 있다.

 

Spring Boot에서 JPA 사용하기

spring-boot-starter-data-jpa 의존성을 추가하고 구성을 살펴보면 다음과 같이 spring-data-jpa, spring-boot-starter-jdbc, hibernate-core 등의 의존성이 포함된 것을 알 수 있습니다. Spring Boot에서는 기본적으로 JPA 구현체로 Hibernate 프레임워크를 사용한다는 것을 알 수 있습니다.

spring-boot-starter-data-jpa 의존성 구성

 

반응형