초록꼬마의 devlog

객체 지향 언어의 객체(클래스) + Relational DateBase(RDB)의 테이블 자동 매핑

장점

  • 데이터베이스 쿼리를 객체지향적으로 조작 가능

    • 쿼리문 작성 양 감소 → 개발 비용 감소
    • 객체지향적으로 데이터베이스에 접근 → 코드의 가독성 향상
  • 재사용 및 유지/보수 용이

    • ORM을 통해 매핑된 객체는 모두 독립적으로 작성되어있음 → 재사용 용이
    • 객체들은 각 클래스로 나뉘어있어 유지/보수 수월
  • 데이터베이스에 대한 종속성 감소

    • ORM을 통해 자동생성된 SQL문은 객체를 기반으로 데이터베이스 테이블 관리 → 데이터베이스에 종속적이지 않음
    • 데이터베이스 교체 시에도 비교적 적은 리스크 부담

단점

  • ORM만으로 온전한 서비스 구현하기 한계 있음

    • 복잡한 서비스는 직접 쿼리 구현하지 않고 코드로 구현하기 어려움
    • 복잡한 쿼리를 정확한 설계 없이 ORM만으로 구성 시 속도 저하 등의 성능 문제 발생 가능
  • 애플리케이션의 객체 관점과 데이터베이스의 관계 관점의 불일치 발생

    • ORM의 자동 설계 방법에 따라 데이터베이스 테이블의 수 ≠ 애플리케이션의 엔티티 클래스의 수 될 수 있음
    • RDBMS에는 상속 개념 없음
    • RDBMS는 primary key로 동일성 정의 vs Java는 두 객체의 값이 같아도 다른 객체로 판단 가능
    • RDBMS는 foreign key로 연관성 표현, 양방향 관계인 바 방향성 없음 vs 객체 지향 언어에서는 객체 참조하여 연관성 표현, 방향성 존재
    • RDBMS에서는 쿼리를 최소화하고 JOIN을 통해 여러 테이블 로드하고 값 추출하여 탐색 vs Java에서는 객체 참조 같은 연결 수단 활용해서 그래프 형태의 접근

References

  • 스프링 부트 핵심 가이드: 스프링 부트를 활용한 애플리케이션 개발 실무(2022, 장정우)

'back-end dev > framework' 카테고리의 다른 글

component scan  (0) 2023.06.21
proxy 패턴  (0) 2023.06.14
빌드도구  (0) 2022.08.02
Spring Boot  (0) 2022.08.02
[KH정보교육원] 120일차_final project 발표, 수료식  (0) 2022.04.05