ORM(Object Relational Mapping)
ORM을 이해하기전에 단어들의 파악이 우선시 되어야한다.
영속성(Persistence)이란?
: 영구적으로 유지 되는 속성
- 데이터를 생성한 프로그램이 종료되더라도 사라지지 않는 데이터의 특성
- 영속성을 갖지 않는 데이터는 단지 메모리에서만 존재하기 때문에 프로그램을 종료하면 모두 잃어버리게 된다.
Object Persistence(영구적인 객체)
- 메모리 상의 데이터를 파일 시스템, 관계형 데이터베이스 혹은 객체 데이터베이스 등을 활용하여 영구적으로 저장하여 영속성을 부여한다.
- 데이터를 데이터베이스에 저장하는 3가지 방법
- JDBC ( Ex. java )
- Spring JDBC ( Ex. jdbcTemplate )
- Persistence Framework (Ex. Hibernate, MyBatis)
Persistence Layer
-
프로그램의 아키텍처에서, 데이터에 영속성을 부여해주는 계층을 말한다.
-
JDBC를 이용하여 직접 구현할 수 있지만 Persistence Framework를 이용한 개발이 많이 이루어진다.
- 데이터를 데이터베이스에 저장하는 방법에는 3가지가 있다.
1. JDBC (java에서 사용)
2. Spring JDBC (ex)JdbcTemplate)
3. Persistence Framework (Ex. Hibernate, 등)
- ORM(Object Relational Mapping)이란?
Object Relational Mapping, 객체-관계 매핑
- 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑(연결) 해주는 것을 말한다.
- 객체 지향 프로그래밍은 클래스를 사용하고, 관계형 데이터베이스는 테이블을 사용한다.
- 객체 모델과 관계형 모델 간에 불일치가 존재한다.
- ORM을 통해 객체 간의 관계를 바탕으로 SQL을 자동으로 생성하여 불일치를 해결한다.
즉, DB의 테이블을 객체인 클래스를 이용하여 매핑해주는 기술
ORM의 장단점
장점
- 객체 지향적인 코드로 인해 더 직관적이고 비즈니스 로직에 더 집중할 수 있게 도와준다.
- ORM을 이용하면 SQL Query가 아닌 직관적인 코드(메서드)로 데이터를 조작할 수 있어 개발자가 객체 모델로 프로그래밍하는 데 집중할 수 있도록 도와준다.
- 선언문, 할당, 종료 같은 부수적인 코드가 없거나 급격히 줄어든다.
- 각종 객체 대한 코드를 별도로 작성하기 때문에 코드의 가독성을 올려준다.
- The Object-Relational Impedance Mismatch
- Association(연관성)
- One-To-One Relationship
- One-To-Many Relationship
- EJB
- 과거의 사용되었던 자바의 표준이다 (Entity Bean)
- 과거의 대표적 ORM
- 문제발생
- API의 복잡성이 높다. (Interface를 많이 구현해야하는 이유때문에)
- 속도가 느리다.
- Hibernate
- ORM 프레임워크, Open Souse SW
- EJB 의 이용을 대체할 목적으로 개발되었다
- JPA(Java Persistence API)
- 현재 자바 진영의 ORM 기술 표준으로, 인터페이스의 모음이다.
- 즉 실제로 동작하는 것이 아니다
- JPA 인터페이스를 구현한 대표적인 오픈소스가 Hibernate 라고 할 수 있다.
References (참고 자료)