본문 바로가기

JPA

[JPA] ORM (Object-Relational Mapping) 알아보기

🔍 ORM 이란?

  • 객체 관계 매핑(Object-Relational Mapping)의 약어이다.
  • 객체 지향 프로그래밍 언어와 관계형 데이터베이스 간의 데이터를 자동으로 연결해 주는 기술이다.

🤔 ORM 사용 이유

  • 객체 지향 프로그래밍은 클래스를 사용하고, 데이터베이스는 테이블을 사용하여 객체 모델과 데이터 베이스 간에 불일치가 발생할 수 있다. 이를 ORM을 통해 객체 간의 관계를 바탕으로 SQL을 자동으로 생성하여 불일치의 문제를 해결해 준다.
📌 객체-관계 간의 불일치
1. 세분성 (Granularity)
- 경우에 따라서 데이터베이스에 있는 테이블 수보다 더 많은 클래스를 가진 모델이 생길 수 있다.

2. 상속성 (Inheritance)
-
RDBMS는 객체지향 프로그래밍 언어의 특징인 상속 개념이 없다.

3. 일치 (Identity)
-
RDBMS는 기본키를 이용하여 동일성을 정의한다. 그러나 자바는 객체 식별(a==b)과 객체 동일성(a.equals(b)) 을 모두 정의한다.

4. 연관성 (Associations)
- 객체지향 언어는 방향성이 있는 객체의 참조(reference)를 사용하여 연관성을 나타내지만, RDBMS는 방향성이 없는 외래키(foreign key)를 이용해서 나타낸다.

5. 탐색 (Navigation)
-
자바와 RDBMS에서 객체를 접근하는 방법이 근본적으로 다르다. 자바는 그래프형태로 하나의 연결에서 다른 연결로 이동하며 탐색하지만, RDBMS는 일반적으로 SQL문을 최소화하고 JOIN을 통해 여러 엔티티를 로드하고 원하는 대상 엔티티를 선택하는 방식으로 탐색한다.

🔍 ORM의 장점

  • 객체 지향적인 개발이 가능하다.
    • ORM을 사용하면 객체 지향 프로그래밍 언어의 특징을 그대로 유지하면서 데이터베이스와 상호작용할 수 있습니다.
  • 재사용 및 유지보수의 편리성이 증가한다.
    • ORM은 독릭적으로 작성되어 있어, 해당 객체들을 재사용할 수 있다.
    • 매핑정보가 명확하여, ERD를 보는 것에 대한 의존도를 낮출 수 있다.
  • 반복적인 작업 감소: ORM은 DBMS의 종속성을 낮춰준다. CRUD(Create, Read, Update, Delete) 작업을 자동화하여 개발자가 일일이 SQL 쿼리를 작성하는 번거로움을 줄여준다.

🔍 ORM 단점

  • ORM으로만 완벽한 서비스를 구현하기가 어렵다.
  • 프로젝트의 복잡성이 커질 경우 난이도 또한 올라간다.
  • 프로시저가 많은 시스템에선 ORM의 객체 지향적인 장점을 활용하기 어렵다.

🔍 Frameworks

  • JPA(Java Persistence API)는 자바의 ORM 기술 표준으로 인터페이스의 모음이다. 이러한 JPA 표준 명세를 구현한 구현체가 Hibernate이다.

'JPA' 카테고리의 다른 글

[JPA] 연관관계 매핑  (0) 2022.09.14