본문 바로가기
JPA

[JPA] ORM 의미 및 JPA 는 왜 쓰는가?

by onejunu 2020. 8. 6.

 

위키백과의 설명

출처) ko.wikipedia.org/wiki/%EA%B0%9D%EC%B2%B4_%EA%B4%80%EA%B3%84_%EB%A7%A4%ED%95%91

 

객체 관계 매핑 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 객체 관계 매핑(Object-relational mapping; ORM)은 데이터베이스와 객체 지향 프로그래밍 언어 간의 호환되지 않는 데이터를 변환하는 프로그래밍 기법이다. 객체 지향

ko.wikipedia.org

ORM을 검색하면 정의는 객체 관계 매핑이라고 한다. 

 

객체 관계 매핑이라는 단어가 생겨났는가?

 

ORM이 생긴 이유를 알기 위해서는 객체 지향 프로그래밍 언어의 객체와 데이터베이스의 데이터의 차이를 알아야 한다.

 

과일상자라는 객체를 java에서 클래스로 생성한다고 하자.

 

과일상자는 상자의 이름을 가지며 여러개의 과일들을 담을 수 있다.

 

class FruitBox{


    private String name; // 과일상자의 이름
    private List<Fruit> fruitList = new ArrayList<>(); // 과일들이 담기는 곳

...
}

 

 

반면 데이터 베이스에서는 과일상자를 어떻게 표현해야 할까??

 

2개의 과일상자 테이블을 가지고 있다고 가정하자.

 

<과일상자 테이블>

id (primary key) name
1 과일상자1
2 과일상자2

 

 

<과일 테이블>

id(primary key) 과일상자id( foreign key) 과일이름
3 1 사과
4 1 포도
5 1
6 2 오렌지

 

이처럼 객체의 세상과 데이터베이스의 세상은 데이터를 표현하는 방식이 너무 다르다.

 

그래서 객체지향언어와 데이터베이스간의 설계 차이를 극복하기 위한 방법으로 ORM이 제시된다.

 

즉, 객체는 객체답게 설계하고 데이터베이스는 데이터베이스답게 설계하면 나머지는 ORM이 알아서 매핑해준다는 것이다.

 

 

그리고 자바진영에서 ORM을 검색하면 가장많이 나오는 말이 하이버네이트, JPA,스프링 데이터JPA 가 있다.

 

먼저 JPA는 기술 명세다. 구현해야하는 인터페이스의 모음이다. 

 

반면 하이버 네이트는 JPA를 구현한 실제 구현체이다.  

 

이런 하이버네이트가 ORM을 해주는 프레임워크를 제공하는 것이다. 

 

참조) https://suhwan.dev/2019/02/24/jpa-vs-hibernate-vs-spring-data-jpa/

 

JPA, Hibernate, 그리고 Spring Data JPA의 차이점

개요 Spring 프레임워크는 어플리케이션을 개발할 때 필요한 수많은 강력하고 편리한 기능을 제공해준다. 하지만 많은 기술이 존재하는 만큼 Spring 프레임워크를 처음 사용하는 사람이 Spring 프레�

suhwan.dev

 

'JPA' 카테고리의 다른 글

[JPA] @ManyToOne , @OneToMany, @JoinColumn  (0) 2020.08.06
[JPA] @Id, @GenerateValue 의 전략  (0) 2020.08.06
[JPA] 엔티티 업데이트  (0) 2020.08.06
[JPA] EntityManager 명령어 정리  (0) 2020.08.06
[JPA] 영속성과 영속성 컨텍스트  (0) 2020.08.06

댓글