스프링부트/정리

[SpringBoot] 스프링부트 개념정리 with JPA - JPA 개념잡기

092 2024. 9. 13. 16:34
Springboot 강좌 - 개념정리 [4 ~ 7강] 요약
  • JPA 란?
    • Java Persistence API
    • ORM 기술
    • 반복적인 CRUD 작업을 생략하게 해줌
    • 영속성 컨텍스트를 가지고 있음
    • DB와 OOP의 불일치성을 해결하기 위한 방법론을 제공함(DB는 객체 저장 불가능)
    • OOP의 관점에서 모델링을 할 수 있게 해줌(상속, 콤포지션, 연관관계)
    • 방언 처리가 용이하여 Migration 하기 좋음, 유지보수에도 좋음
    • 쉽지만 어려움

전체 내용
  •  JPA
    • Java Persistence API(Application Programming Inteface)
      • 자바에 있는 데이터(RAM 내 데이터는 휘발성임)를 HDD내 DBMS에 영구히 저장할 수 있게 도와주는 API(인터페이스)
      • persistense(영속성)
        • 데이터를 생성한 프로그램의 실행이 종료되더라도 사라지지 않는 데이터의 특성을 의미
        • 파일 시스템, 관계형 데이터베이스 혹은 객체 데이터베이스 등을 활용하여 구현함
      • API : 응용 프로그램 프로그래밍 인터페이스, 다양한 응용 프로그램에 사용할 수 있는 운영 체제, 혹은 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스
        • Application - 프로그램
        • Programming - 프로그래밍
        • Interface - 인터페이스
        •  
          프로토콜(동등 관계)과 인터페이스(상하 관계)의 차이 설명 그림
    • ORM 기술
      • Object Relational Mapping
        • 객체 - 관계 매핑
        • 객체 지향 프로그래밍 언어를 사용하여 생성된 객체와 관계형 데이터베이스의 테이블 간의 매핑을 가능하게 하는 프로그래밍 기법
        • 자바 클래스 기반으로 DB에 테이블을 모델링함
        • 개발자는 SQL 쿼리를 직접 작성하는 대신,객체의 속성과 메서드를 통해 데이터를 조작할 수 있음
        • 이로 인해 개발자는 데이터베이스 구조보다는 비즈니스 로직에 더 집중할 수 있음
        • 코드의 가독성과 유지보수성이 향상
      • <=> TRM(Table Relational Mapping)
          • 테이블 간의 관계를 매핑하는 기법
          • DB 테이블 기반으로 자바 클래스를 모델링함
          • 데이터 모델링 과정에서 테이블 간의 관계(예: 일대일, 일대다, 다대다)를 정의하고 구현하는 것이 주요 초점
    • 반복적인 CRUD 작업을 생략하게 해줌
      • 자바 - DB 사이 반복 작업 담당
      • 전송된 쿼리에 대한 응답 받아서 자바 object로 변경, 세션 종료, connection 종료 등 일련의 작업을 JPA 함수 하나로 제공됨
    • 영속성 컨텍스트를 가지고 있음
      • context : 해당 대상에 대한 모든 정보
      • 영속성 컨텍스트(persistense context)
        • 애플리케이션과 데이터베이스 사이에서 객체를 보관하는 가상의 데이터베이스 같은 역할  
        • 자바가 DB에 영구적으로 저장해야하는 모든 것들에 대한 정보
        • 자바는 영속성 컨텍스트를 통해 DB 접근함(직접 접근 x , 영속성 컨텍스트를 사이에 끼고 주고받음)
        • 영속성 컨텍스트의 데이터는 DB와 동기화됨(자바가 영속성 컨텍스트의 데이터를 추가/삭제하면 영속성 컨텍스트가 DB에도 해당 데이터를 추가/삭제함)
        • 자바에서 select을 영속성 컨텍스트에 요청 -> 영속성 컨텍스트가 DB에 select 요청해서 받은 데이터를 자바 object로 변환해서 가짐 -> 영속성 컨텍스트가 해당 데이터를 자바에 반환
        • 자바가 받은 데이터, 영속성 컨텍스트가 갖고있는 데이터, DB 내 데이터 모두 일치한 상황에서 자바가 해당 데이터의 값을 변경하면 영속성 컨텍스의 값도 해당 값으로 변경됨, DB에서는 같은 데이터의 값이 달라졌다고 인식되어 update 작동
        • 영속성 컨텍스트 설명 그림
    • DB와 OOP(객체 지향적 프로그래밍)의 불일치성을 해결하기 위한 방법론을 제공함(DB는 객체 저장 불가능)
      • ORM을 통해 DB와 OOP의 불일치성 해결할 수 있음
      • DB는 객체 저장 불가능 / 자바는 객체 저장 가능(Object 타입)
      • 자바는 다른 테이블 데이터 참조 시 객체 그대로 저장 가능함
    • OOP의 관점에서 모델링을 할 수 있게 해줌(상속, 콤포지션, 연관관계)
    • 방언 처리가 용이하여 Migration 하기 좋음, 유지보수에도 좋음
    • 쉽지만 어려움

 

유튜브 메타코딩 강의
 

Springboot 강좌 - 개념정리

떨어지는 낙엽에도 흔들리는 니 마음 - 넌 낙엽덩이

www.youtube.com