soowanlog

ORM 본문

백엔드/Java

ORM

개발자솬
백엔드/Java

ORM

개발자솬 2024. 3. 5. 17:39
728x90
반응형
  • ORM(Object Relational Mapping)이란?

객체와 관계형 데이터베이스 매핑의 줄임말입니다. 즉, 우리가 OOP에서 쓰는 객체라는 개념을 구현한 클래스와 RDB에서 쓰이는 데이터는 테이블을 매핑(연결)하는 것을 의미합니다.

 

ORM을 이용하면 SQL Query가 아닌 직관적인 코드로서 데이터를 조작할 수 있습니다.

// SQL Query
@Select("""
SELECT *
FROM member
""")
List<memberDto> findMember();
// ORM
memberRepository.findAll();

 

  • 객체-관계형 데이터베이스 간의 불일치

클래스와 테이블은 서로가 기존부터 호환가능성을 두고 만들어진 것이 아니기 때문에 아래와 같은 불일치가 발생합니다.

불일치(RDBMS vs JAVA) 설명
세분성
(Granularity)
경우에 따라 데이터베이스에 있는 테이블보다 더 많은 클래스를 가진 모델이 생길 수 있다.
상속성
(Inheritance)
RDBMS는 OOP의 특징인 상속 개념이 없다.
일치성
(Identity)
RDBMS는 기본키(Primary key)를 이용하여 동일성을 정의한다.
Java는 객체 식별(a == b)와 객체 동일성(a.equals(b))을 모두 정의한다.
연관성
(Associaions)
RDBMS는 방향성이 없는 외래키(Foreign key)를 이용해서 나타낸다.
Java는 방향성이 있는 객체 참조(Reference)를 이용해서 나타낸다.
탐색
(Navigation)
RDBMS는 일반적으로 SQL문을 최소화하고 JOIN을 통해 여러 엔터티를 로드하고 원하는 대상 엔터티를 선택하는 방식으로 탐색한다.
Java는 그래프형태로 하나의 연결에서 다른 연결로 이동하며 탐색한다.

 

이를 ORM을 통해 객체 간의 관계를 바탕으로 SQL문을 자동으로 생성하여 불일치를 해결합니다.

 

따라서 ORM을 이용하면 따로 SQL문을 작성할 필요 없이 객체를 통해 간접적으로 데이터베이스를 조작할 수 있게 됩니다.

 

  • ORM의 장점

객체지향적인 코드로 인해 더 직관적이고 로직에 집중할 수 있도록 도와줍니다.

재사용 및 유지보수의 편리성이 증가합니다.

RDBMS에 대한 종속성이 줄어듭니다.

참    고    자    료

- ORM이란? | gmlwjd9405.github

 

- ORM(Object Relational Mapping)의 개념 | coco3co

728x90
반응형

'백엔드 > Java' 카테고리의 다른 글

Java 버전 별 특징  (2) 2024.03.07
Java  (0) 2024.03.07
JDBC  (0) 2024.03.06
Persistence Framework  (0) 2024.03.06
OOP  (0) 2024.03.05