Spring Boot (3) ORM MariaDB

넙데데맨·2022년 7월 18일
0

ORM

Object Realational Mapping
객체와 RDB의 테이블 자동으로 매핑하는 방법
쿼리문 작성이 아닌 코드로 데이터를 조작할 수 있다.

장점

  • 데이터베이스 쿼리 객체지향적 조작
  • 재사용 유지보수가 편함
  • 데이터베이스 종속성이 줄어든다.

단점

  • 복잡한 서비스의 경우 어려움
  • 복잡한 쿼리를 정확한 설계 하지 못했을 경우 속도 저하 등 성능 문제 발생
  • 애플리케이션 객체 관점과 DB 관계 관점의 불일치
    • 애플리케이션 클래스와 DB 테이블 수가 다를 수 있다.(클래스가 더 많아짐)
    • RDBMS에는상속이 없음
    • RDBMS는 기본 키로 동일성을 정의하지만 자바는 두 객체의 값이 같아도 다르다고 판단할 수 있음
    • 연관성을 나타낼 때 자바는 객체 참조(방향성) RDBMS는 외래키 삽입(양방향성)
    • 객체(값)에 접근하는 방식이 다름

JPA

Java Persistence API
Java 진영 ORM 기술 표준 인터페이스
ORM 개념을 구체화시킨 스펙을 포함하며 어떻게 동작하는 지 메커니즘을 정리한 것

Hibernate

자바 ORM 프레임워크

Spring Data JPA

JPA 편리하게 사용할 수 있도록 지원하는 스프링 하위 프로젝트

  • CRUD 처리에 필요한 인터페이스 제공
  • 하이버네이트의 엔티티 매니저를 직접 다루지 않고 리포지토리 정의해 사용

영속성 컨텍스트

엔티티와 레코드의 괴리를 해소하는 기능, 객체를 보관하는 기능을 수행한다.

영속 객체

영속성 컨텍스트에 들어온 엔티티나 레코드를 뜻하는 말로 JPA의 관리 대상이 된 객체
세션 단위의 생명주기를 가진다.

엔티티 매니저

DB에 접근해 CRUD 작업을 수행하는 등 엔티티를 관리하는 객체 Spring Data JPA에서는 리포지토리를 사용해 DB에 접근

엔티티 매니저 팩토리

DB에 대응하는 객체로 persistence.xml 파일을 구성하고 사용하는 개체 Spring Data JPA에서는 application.properties에 작성한 설정으로 간단하게 사용 가능

엔티티 생명주기

비영속(New)

영속성 컨텍스트에 추가되지 않은 엔티티 객체 상태

영속(Managed)

영속성 컨텍스트에 의해 관리되는 엔티티 객체 상태

준영속(Detached)

영속성 컨텍스트에 의해 관리되던 엔티티 객체가 컨텍스트와 분리된 상태

삭제(Removed)

DB에서 레코드를 삭제하기 위해 영속성 컨텍스트에 삭제 요청을 한 상태

profile
차근차근

0개의 댓글