다라다라V
article thumbnail
Published 2023. 10. 30. 23:47
ORM의 개념과 JPA 프레임워크/Spring
728x90
반응형

데이터 베이스 연동

마리아 DB 설치

  • 애플리케이션은 데이터를 주고 받는 것이 주 목적
  • 정상적으로 로직이 동작하기 위해서는 데이터베이스(DB)가 반드시 필요하고,
    그 중 가장 널리 사용되는 마리아 DB를 사용할 예정
  • 마리아 DB 다운로드 페이지(https://mariadb.org/download) 에서 다운 가능

  • 해당 사진과 같이 버전을 10.6.5로 맞추는 것이 좋음.
    Display older releases를 체크하면 이전 버전을 선택할 수 있음

  • Next를 눌러 설치를 진행
  • 해당 화면이 나오면 root 계정의 비밀번호를 생성
    실무에서는 보안상 root 패스워드는 사용하지 않지만, 실습에서는 사용
  • 문자 인코딩 방법을 UTF-8을 기본값으로 설정하기 위해 아래도 체크

 

  • 서버 이름과 포트 번호를 설정
  • 포트 번호의 경우 기본적으로 3306이 사용되나, 별도의 데이터 베이스를 설치한 경우 3307로 매핑되기도 함

 

  • 좌측 하단 [신규] 버튼을 누르면 접속 정보를 설정할 수 있는 항복들이 등장
  • 사용자는 root로, 암호는 마리아 DB 설치 시 지정한 패스워드를 입력
  • 포트 번호는 자신이 설정한 대로 지정. 기본적으로 3306

  • 데이터 베이스 접속 시 기본으로 설정되는 데이터 베이스는 환경 설정 등의 정보를 담으므로 수정하지 않음
CREATE DATABASE springboot;
  • 해당 명령을 통해 데이터 베이스를 생성

 

 

ORM

ORM의 개념

  • ORM(Object Relational Mapping)은 객체 관계 매핑
  • 객체(클래스)와 RDB(Relational Database)의 테이블을 자동으로 매핑하는 방법
  • 클래스는 데이터베이스 테이블과 매핑하기 위한 것이 아니므로 불일치가 존재
    이를 해결하는 것이 ORM

 

ORM의 장점

  1. ORM을 사용하면서 데이터베이스 쿼리를 객체지향적으로 조작할 수 있습니다.
  2. 재사용 및 유지보수가 편리합니다.
  3. 데이터베이스에 대한 종속성이 줄어듭니다.

 

ORM의 단점

  1. ORM만으로 온전한 서비스를 구현하기에는 한계가 있습니다.
  2. 애플리케이션의 객체 관점과 데이터베이스의 관계 관점의 불일치가 발생합니다.
    • 세분성(Granularity): 데이터베이스에 있는 테이블의 수와 애플리케이션의 엔티티
클래스의 수가 다른 경우
    • 상속성(nheritance): RDBMS에는 상속이라는 개념이 없음
    • 식별성(dentify): RDBMS는 기본키로 동일성을 정의. 하지만 자바는 두 객체의 값이 같아도 다르다고 판단 가능
    • 연관성(Associations): RDBMS에서는 외래키를 삽입함으로써 연관성을 표현. RDBMS에서 외래키를 삽입하는 것은 양방향의 관계를 가지기 때문에 방향성이 없음
    • 탐색(Navigation): 자바와 RDBMS는 어떤 값(객체)에 접근하는 방식이 다름

 

JPA

  • JPA(Java Persistence API)는 ORM 기술 표준으로 채택된 인터페이스 모음
  • JPA는 ORM에서 더 구체화한 스펙을 포함
    실제로 동작하는 것이 아닌 어떻게 동작하는지 메커니즘을 정리한 표준 명세서
  • JPA는 내부적으로 JDBC를 사용함.
    개발자가 직접 개발하면 효율성이 떨어지므로, 적절한 SQL을 생성하고 데이터 베이스를 조작해 객체를 자동 매핑
  • 구현체는 하이버네이트(Hibernate), 이클립스 링크(EclipseLink), 데이터 뉴클리어스(DataNucleus)가 있음
  • 가장 많이 사용되는 것은 하이버 네이트

 

하이버네이트

  • 자바의 ORM 프레임워크이자 하이버네이트는 JPA 구현체 중 하나
  • 실습에서는 하이버네이트의 기능을 더욱 편리하도록 사용하는 Spring Data JPA를 사용할 예정 (6.5 참고)

 

Spring Data JPA

  • Spring Data JPA는 JPA를 편리하게 사용할 수 있도록 지원하는 스프링 하위 프로젝트 중 하나
    • CRUD 처리에 필요한 인터페이스 제공
    • 하이버네이트 엔티티 매니저를 직접 다루지 않아 스프링이 적합한 쿼리를 동적으로 생성함
  • 하이버 네이트에서 자주 사용되는 기능을 더 쉽게 사용;하도록 함

 

영속성 컨텍스트

  • 영속성 컨텍스트(Persistence Context)는 애플리케이션과 데이터베이스 사이에서 두 가지 기능을 함
    • 엔티티와 레코드의 괴리를 해소하는 기능
    • 객체를 보관하는 기능
  • 엔티티 객체가 영속성 컨텍스트에 들어와 JPA의 관리 대상이 되면 영속 객체(Persistence Object)라고 함
  • 영속 객체는 세션 단위의 생명 주기를 가짐

 

엔티티 매니저

  • 엔티티 매니저(Entity Manager)는 데이터 베이스에 접근해서 CRUD 작업을 수행하는 엔티티 관리 객체
  • Spring Data JPA를 사용하면 리포지토리를 사용해서 데이터베이스에 접근
  • 엔티티 매니저는 스프링 부트에서 자동 설정된 엔티티 매니저 팩토리(Entity ManagerFactory)에서 만듦

 

엔티티의 생명주기

  • 엔티티 객체는 영속성 컨텍스트에서 다음과 같은 4가지 상태로 구분됨
  1. 비영속(New) : 영속성 컨텍스트에 추가되지 않은 엔티티 객체의 상태
  2. 영속(Managed) : 영속성 컨텍스트에 의해 엔티티 객체가 관리되는 상태
  3. 준영속(Detached) : 영속성 컨텍스트에 의해 관리되던 엔티티 객체가 컨텍스트와 분리된 상태
  4. 삭제(Removed) :  데이터베이스에서 레코드를 삭제하기 위해 영속성 컨텍스트에 삭제 요청을 한 상태

 


QUIZ

1. 마리아 DB의 기본 포트 번호는 ( 3306 ) 입니다.

2. ( ORM )은 객체 관계를 매핑하는 방법을 의미합니다.

3. 클래스(객체)는 데이터베이스의 ( 테이블 )과 매핑하기 위한 것이 아니므로 ORM으로 이 불일치를 해결합니다.

4. ( JPA )는 ORM 기술 표준으로 채틱된 인터페이스 모음을 의미합니다.

5. JPA 구현 방식으로는 ( 하이버네이트 ), 이클립스 링크, 데이터 뉴클리어스가 있습니다. 그 중  ( 하이버네이트 ) 이 가장 많이 사용됩니다.

6. ( Spring Data JPA )를 이용하여 CRUD 처리나 스프링이 적합한 쿼리를 자동으로 처리하도록 할 수 있습니다.

7. 엔티티 객체가 영속성 컨텍스트에 들어와 JPA의 관리 대상이 되면  ( 영속객체 ) 라고 함

8.  ( 엔티티 메니저 ) 는 데이터 베이스에 접근해서 CRUD 작업을 수행하는 엔티티 관리 객체

9. 엔티티의 생명 주기는  ( 비영속 ),  ( 영속 ),  ( 준영속 ),  ( 삭제 ) 로 총 네 단계가 있습니다.

 

Answer

  1. 3306
  2. ORM
  3. 테이블
  4. JPA
  5. 하이버네이트
  6. Spring Data JPA
  7. 영속객체
  8. 엔티티 매니저
  9. 비영속, 영속, 준영속, 삭제
반응형

'프레임워크 > Spring' 카테고리의 다른 글

서비스의 인증과 권한 부여  (1) 2023.12.31
연관관계 매핑  (1) 2023.11.26
JPA와 스프링 데이터 JPA  (0) 2023.10.03
profile

다라다라V

@DaraDaraV

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!