Miracle Morning, LHWN

0. ORM 과 JPA 에 대해 본문

IT 기술/[JAVA] Spring Boot

0. ORM 과 JPA 에 대해

Lee Hye Won 2021. 5. 5. 08:15

ORM (Object Relational Mapping) : 객체 - 관계 매핑

객체와 관계형 데이터베이스의 데이터를 자동으로 매핑 (연결) 해주는 것이다.

  ORM DataBase
데이터 객체 (클래스) 테이블
연관 관계 속성 (관계 매핑) FK 혹은 Join Key

 

# ORM 의 장점

- 객체 지향적이기 때문에 개발자가 비즈니스 로직 및 코드 자체에 집중할 수 있다.

- 관념적 코드 (Boilerplate code) 가 없거나 적어진다. (선언문, 할당 등) → 객체에 대한 코드를 작성하기 때문에 가독성이 올라간다.

- 코드의 재사용, 유지보수의 편리성이 증대된다.

- DBMS 의 종속성이 줄어든다. (객체의 관계를 바탕으로 SQL 을 자동으로 생성하기 때문)

 

※ Boilerplate code : 각종 문서에서 반복적으로 인용되는 문서의 한 부분으로서 일종의 템플릿을 의미한다.
가령, React 를 설치할 때 초기 세팅이 완료된 프로젝트를 만들기 위해 'create-react-app' 을 사용하는데 이것이 React 의 Boilerplate 이다.

(참고) Boilerplate 를 모아놓은 사이트 : www.boilrplate.com)

 

# ORM 의 단점

- N + 1 문제 등 해결해야 할 과제가 있다.

- 생성되는 쿼리 속도 등의 문제가 있다.

- 설계가 잘못되면 일관성이 무너지거나 성능 저하의 문제가 있다.

JPA (Java Persistence API) : Java 의 ORM 표준 기술

Java 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스로,

"프레임워크를 통해 데이터베이스에 쉽게 접근할 수 있는 통로" 이다.

 

Application 과 JDBC 사이에서 동작한다.

https://fastcampus.co.kr/courses/204729/clips/

- 생산성/유지보수성을 향상해준다.

- DataBase 와 객체 지향 패러다임의 불일치를 해결해준다.

- 성능을 향상시킬 수 있다.

- 데이터 접근의 추상화와 벤더 독립성이 있다.

 

 

# JPA 의 구현체

  1. Hibernate
  2. Spring Data JPA : JPA 를 한단계 추상화시킨 Repository 인터페이스를 제공한다.

 

# 객체 매핑

@Entity 이 클래스를 테이블과 매핑한다고 JPA 에게 알려주는 annotation 이다.
@Entity annotaion 이 있는 클래스를 엔티티 클래스라고 한다.
@Table 엔티티 클래스에 매핑할 테이블 정보를 알려준다.
name 속성을 이용하여 테이블 명을 지정하며,
name 속성이 생략되어 있을 경우 클래스의 이름 (엔티티의 이름) 을 테이블 이름으로 매핑한다.
@Id 엔티티 클래스의 필드를 테이블의 기본키 (Primary Key, PK) 에 매핑한다.
@Id 가 사용된 필드를 식별자 필드라고 한다.
@Column 필드를 컬럼에 매핑한다.

 

출처 : fastcampus.co.kr/courses/204729/clips/

 

 

 

 

Comments