Spring Boot - ORM

UnKnown12·2022년 12월 1일
0

Spring Boot

목록 보기
2/13

📌 ORM - 객체 관계 매핑

Object Relational Mapping

  • 객체 와 관계형 데이터베이스를 따로 설계
    ( 객체 <-> 객체 ) ( 관계형 DB <-> 관계형 DB )

  • 이 때, ORM 프레임워크 가 중간에서 매핑 한다

  • 우리가 일반적으로 알고 있는
    애플리케이션 class 와 RDB 의 테이블을 연결한다는 뜻이며,
    기술적으로 애플리케이션의 객체를 RDB 테이블에 자동으로 영속화 해주는 것이라고 보면 된다.

📌 ORM 장점

  • SQL 문이 아닌 Method 를 통해 DB를 조작할 수 있어
    객체 모델을 이용하여 비지니스 로직을 구성하는 데만 집중할 수 있다.

  • 내부적으로는 SQL문 쿼리를 생성하여 DB를 조작하긴 하나,
    개발자가 따로 신경쓸 필요가 없다 . ORM 이 알아서 하기 때문에.

  • 쿼리와 같이 필요한 선언문, 할당 등의 부수적인 코드가 줄어들어
    각종 객체에 대한 코드를 별도로 작성하여 코드의 가독성을 높임

  • 따라서 객체 지향적인 코드 작성이 가능하며,
    객체지향적 접근만 고려하면 되기에 생산성이 증가한다.

  • 매핑하는 정보가 Class로 명시 되었기 때문에
    ERD를 보는 의존도를 낮출 수 있고, 유지보수 및 리팩토링에 유리하다

  • 예를 들어 MYSQL DB 사용하는 중에, PostgreSQL로 DB를 변환해야 한다면
    새로 쿼리를 생성해야하나, ORM 을 사용한다면 딱히 쿼리를 수정할 필요는 없다

📌 ORM 단점

  • 학습비용이 비효율적이다.

  • 프로젝트 규모가 크고 복잡해, 설계가 잘못된 경우
    속도 저하 + 일관성을 무너뜨리는 문제점이 생길 수 있다.

  • 복잡하고 비지니스 로직에 종속적인 쿼리는 속도를 위해 별도의 튜닝이 필요하다.
    따라서 결국 SQL문을 써야할 수도 있다.

📌 JPA

Java Persistence API

  • 자바 어플리케이션에서 관계형 DB 를 사용하는 방식을 정의한 DB

  • 자바에서 ORM 기술의 표준 DB API 이다

  • JPA 가 제공하는 API를 사용하면, 객체를 DB에 저장하고 관리할 때,
    개발자는 SQL문을 작성하지 않아도 된다.

  • JPA가 개발자 대신 적절한 SQL을 생성해 ( 어떤 DB환경이든 )
    객체를 자동으로 Mapping 까지 해준다.

📌 데이터베이스 방언

  • JPA 는 특정 DB 에 종속되지 않는다

  • JPA 에 적용되는 다양한 DB 마다 각각 다른 SQL 문법과 메소드 는 조금씩 다르다.
    ( = DB 개발 환경마다 다르다 )

  • 데이터베이스 방언은 SQL 표준을 지키지 않는 특정 DB만의 고유한 기능인데,
    이를 oracle 이라고 한다

  • DB 방언 oracle 을 통해 DB 환경 및 언어 가 달라도 JPA 에서 작성한
    SQL문 + 메소드를 실행시킬 수 있다.

profile
Hyobin12

0개의 댓글