ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [SpringBoot] JPA
    Programming/SpringBoot 2023. 12. 7. 15:12
    728x90

    JPA

    Java Persisitence API는 자바 진영의 ORM기술 표준입니다.

    - ORM (Object Relational Mapping) : 객체와 테이블을 매핑해서 패러다임의 불일치를 개발자 대신 해결

    DB에 데이터를 기록해야 할때, 자바 언어로 저장할 수 없습니다. DB는 SQL언어를 사용하기 때문입니다.

    JPA는 자바 언어로 DB에 명령을 내리는 도구입니다.

    데이터를 객체 지향적으로 관리할 수 있게 해줍니다.

     

     

    JPA의 핵심 도구로는 엔티티와 리파지터리가 있습니다.

    Entity

    자바 객체를 DB가 이해할 수 있게 만든 것으로, 이를 기반으로 테이블이 만들어집니다.

    Repository

    엔티티가 DB속 테이블에 저장 및 관리될 수 있게 하는 인터페이스

     

     

    DTO를 DB에 저장하는 과정

    1. DTO를 엔티티로 변환하기

    2. 리파지터리를 이용해 엔티티를 DB에 저장하기

     

    장점

    생산성

    JPA를 자바 컬렉션에서 객체를 저장하듯 JPA에게 저장할 객체를 전달.

    INSERT SQL를 작성하고 JDBC API사용하는 반복적인 일을 JPA가 대신 처리.

    CREATE TABLE같은 DDL문 자동 생성.

    데이터베이스 설계 중심의 패러다임을 객체 설계 중심으로 역전

     

    유지보수

    엔티티에 필드 추가시 등록, 수정, 조회 관련 코드 모두 변경했어야 하는데, JPA를 사용하면 이런 과정을 JPA가 대신 처리.

    개발자가 작성해야 할 SQL과 JDBC API코드를 JPA가 대신 처리해줌으로 유지보수해야 하는 코드 수가 줄어든다.

     

    패러다임 불일치 해결

    상속, 연관관계, 객체 그래프 탐색, 비교하기 같은 패러다음 불일치 해결

     

    성능

    다양한 성능 최적화 기회 제공

    어플리케이션과 데이터베이스 사이에 존재함으로 여러 최적화 시도 가능

     

    데이터 접근 추상화와 벤더 독립성

    데이터베이스 기술에 종속되지 않도록 한다.

    데이터베이스를 변경하면 JPA에게 다른 데이터베이스를 사용한다고 알려주면 됨.

     

    JPA로깅 설정

    Logging이란 시스템이 작동할 때 당시의 상태와 작동 정보를 기록하는 것을 말합니다.

    resources > application.properties 에서 설정 코드를 작성합니다.

    #JPA 로깅 설정
    # 디버그 레벨로 쿼리 출력
    logging.level.org.hibernate.SQL=DEBUG
    
    #쿼리 줄바꿈하기
    spring.jpa.properties.hibernate.format_sql=true
    
    #매개변수 값 보여 주기
    logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE

     

    로깅 레벨은 7단계가 있습니다. 설정한 레벨 이상의 정보가 출력됩니다.

    레벨 설명
    TRACE(레벨1) DEBUG레벨보다 더 상세한 정보
    DEBUG(레벨2) 응용 프로그램을 디버깅하는데 필요한 세부 정보
    INFO(레벨3) 응용 프로그램의 순조로운 진행 정보
    WARN(레벨4) 잠재적으로 유해한 상황 정보
    ERROR(레벨5) 응용 프로그램이 수행할 수 있는 정도의 오류 정보
    FATAL(레벨6) 응용 프로그램이 중단될 만한 심각한 오류 정보
    OFF(레벨7) 로깅 기능 해제

     

     

     

    참고 자료

    https://ultrakain.gitbooks.io/jpa/content/chapter1/chapter1.3.html

    코딩 자율학습 스프링부트3 자바 백엔드 개발 입문 (길벗)

     

     

     

    728x90

    'Programming > SpringBoot' 카테고리의 다른 글

    [Spring] IntelliJ JSP  (0) 2024.03.25
    [SpringBoot] Lombok 롬복  (1) 2023.12.07
    [SpringBoot] MVC패턴 + REST API + JPA 프로젝트 설계  (1) 2023.12.07
    [SpringBoot] Spring Container  (0) 2023.12.02
    [SpringBoot] MVC패턴  (1) 2023.12.02

    댓글

© 2022. code-space ALL RIGHTS RESERVED.