Developer/Spring eGov4.0 (Java11, Tomcat9)

Spring , 영속 계층의 프레임 워크, myBatis와 JPA차이 , OMR이란

단님 2024. 10. 28. 13:16
728x90
이미지로 보는 Persistence Layer

영속 계층 (Persistence Layer)과 그 프레임워크는 현대 애플리케이션 개발에서 데이터베이스와의 상호작용을 효율적이고, 일관성 있게 처리할 수 있도록 도와주는 중요한 역할을 한다.


DAO의 역할

 

DAO는 데이터 베이스와 직접적인 통신을 담당하는 객체로, 각 데이터 테이블과 연동되는 SQL 문을 작성하고 ,

이를 통해 CRUD 작업을 수행한다.

일반적으로 테이블 별로 유사한 구조의 메서드가 필요하고 SQL 문만 달라지기 때문에 ,

이 작업을 자동화 하려는 요구가 생겨났다.

이에 따라 영속계층의 프레임 워크가 발전하게 되었다. 

 


영속계층과 영속 계층의 프레임 워크

 

영속 계층 (Persistence Layer)

 

데이터 베이스와 같은 영구 저장소의 데이터를 저장하거나 불러오는 역할을 담당하는 계층이다.

예를 들어 , 사용자 로그인 정보, 게이글 데이터등이 영속 계층을 통해 저장 및 불러와진다.

 

영속 계층의 프레임 워크

 

영속 계층의 프레임 워크는 데이터베이스 연동을 단순화하고 코드의 유지 보수를 쉽게 하기 위한 라이브러리다.

RDBMS와의 통합을 지원하고 , 대표적인 예로 MyBatisJPA 가 있다.

이들은 SQL 작성 방식을 자동화 하거나 단순화 하는데 중요한 역할을 한다.

 


MyBatis 와 JPA의 차이

 

MyBatis
  • XML 방식
    • SQL 문을 XML 파일 내에세 태그 형태로 작성하여 눈에 직관적으로 보이게 하고,
      개발자가 SQL 문을 직접 작성하는 방식
  • SQL 문을 직접 작성하여 컨트롤이 가능하므로, 복잡한 쿼리에 유리하며,
    개발자가 직접 제어 할 수있는 유연함이 장점이다. 
JPA

 

  • OMR 방식
    • JPA는 데이터베이스의 테이블과 자바 객체를 매핑하는 OMR(Object Relational Mapping) 방식
    • SQL 문을 직접 작성하지 않아도 되며  ,
      자바 객체와 데이터 베이스 테이블 간의 변환 작업을 프레임워크가 자동으로 처리해준다
  • 애노테이션의 활용
    • DTO 와 애노테이션을 통해 테이블 구조를 표현하고,
      코드 내에서 이를 통해 테이블을 생성 및 수정한다.
    • 개발자는 코드의 객체지향 구조만 정의하면 JPA가 이를 데이터베이스에 맞게 변환 실행한다.
JPA(ORM)와 MyBatis(SQL mapper)의 차이


 

OMR (Object-Relatinal Mapping)

 

OMR 의 목적

주요 목표는 관계형데이터베이스(RDBMS)와 객체 지향 프로그래밍 언어간의 불일치를 해소하는 것이다.

객체지향 언어에서는 복잡한 데이터를 객체로 관리하는 반면, RDBMS는 데이터를 테이블(표)로 관리한다.

이런 구조의 차이는 데이터를 일관성 있게 관리하기 어렵게 만드는데,

OMR을 사용하면 객체지향 언어의 객체와 데이터베이스의 표를 매핑하여 두 시스템 간 데이터를 일관성을 유지한다. 

 

OMR 의 장점
  • SQL 작성 최소화
    • 객체 지향 언어 내에서 필요한 매핑 규칙을 설정 -> 데이터 베이스 쿼리를 작성할 필요가 줄어든다
    • 프레임 워크가 SQL문을 자동으로 생성하여 데이터베이스와의 통신을 수행한다.
  • 유지 보수성 향상
    • 테이블의 컬럼이 추가되거나 변경되더라도 엔터티 클래스만 수정하면 되 유지보수가 용이하다.
  • 데이터베이스 독립성
    • OMR은 데이터베이스에 종속되지 않으므로 다른 RDBMS로 쉽게 전환이 가능하다
OMR 의 한계주의
  • 복잡한 쿼리의 한계
    • 단순 CRUD작업은 OMR로 충분히 처리할 수 있지만
      복잡한 쿼리나 성능이 중요한 대규모 데이터 처리에는 한계가 있을 수 있다.
  • 학습 필요
    • 매핑 규칙과 애노테이션 설정 방식에 대한 이해가 필요하므로 초기에 학습이 필요하다.