[백엔드 기초] 기초 개념 정리하기

2025. 10. 21. 20:56·Spring/백엔드 기초

ORM(Object Relational Mapping)이란 ?

: 객체 지향 프로그래밍 언어에서 데이터베이스 테이블을 객체로 매핑하여 SQL을 직접 작성하지 않고 데이터를 조작할 수 있도록 해주는 기술

즉, 관계형 데이터베이스와 객체 지향 프로그래밍 사이의 변환 기법으로 객체와 테이블의 구조를 자동으로 연결해 줌

 

ORM의 동작 원리

: 객체(Entity) ↔︎ 테이블 : 클래스와 테이블이 매핑되고, 클래스의 속성은 테이블의 컬럼에 대응

 

Hibernate 동작 원리

: Hibernate는 JPA(Java Persistence API) 표준을 구현한 대표적인 ORM 프레임워크로, 객체와 관계형 데이터베이스 간 매핑을 처리하고 SQL 실행을 자동화하는 역할을 함

 

JPA와 Hibernate의 관계

: JPA는 표준, Hibernate는 구현체

  • 개발자는 JPA 인터페이스를 사용하고, 실제 동작은 Hibernate가 수행함

Hibernate의 주요 기능

  • 1차 캐시 : 동일 트랜잭션 내에서 한 번 조회한 엔티티는 DB에 다시 조회하지 않고 메모리에서 가져옴
  • Dirty Checking : 엔티티 객체의 값이 변경되면 Hibernate가 자동으로 변경 내용을 감지하고 UPDATE SQL 을 실행함
  • 쿼리 자동 생성 : save(), findById() 등 메서드 호출 시 Hibernate가 SQL을 직접 작성해 실행함

지연 로딩(Lazy Loading) vs 즉시 로딩(Eager Loading)

  • 지연 로딩 : 기본 fetch 전략(컬렉션 연관관계)이며 N+1 문제 발생 가능 → JOIN FETCH로 해결 가능
@OneToMany(fetch = FetchType.LAZY)
private List<Order> orders;

 

  • 즉시 로딩 : 항상 JOIN 쿼리 실행, 불필요한 데이터 로드 주의
@OneToMany(fetch = FetchType.EAGER)
private List<Order> orders;

 

Hibernate 설정 옵션

  • spring.jpa.hibernate.ddl-auto : 테이블 생성 전략 (create, update, validate 등)
  • spring.jpa.show-sql : 실행되는 SQL 로그 출력
  • spring.jpa.properties.hibernate.format_sql : SQL을 보기 좋게 출력
값 설명
create 기존 테이블 삭제 후 새로 생성
update 변경된 엔티티만 반영
validate 엔티티와 테이블 구조 비교, 불일치 시 예외 발생
none 아무 작업도 하지 않음 

 

 

 

'Spring > 백엔드 기초' 카테고리의 다른 글

[백엔드 기초] Filter, Spring Security  (0) 2025.10.24
[백엔드 기초] 쿠키를 활용한 인증 인가 개념 실습  (0) 2025.10.23
[백엔드 기초] 백엔드 기초 개념정리  (0) 2025.10.22
[Spring] 스프링을 위한 기본 개념 복습 및 학습 -2  (0) 2025.10.15
[Spring] 스프링을 위한 기본 개념 복습 및 학습  (0) 2025.10.14
'Spring/백엔드 기초' 카테고리의 다른 글
  • [백엔드 기초] 쿠키를 활용한 인증 인가 개념 실습
  • [백엔드 기초] 백엔드 기초 개념정리
  • [Spring] 스프링을 위한 기본 개념 복습 및 학습 -2
  • [Spring] 스프링을 위한 기본 개념 복습 및 학습
stark77
stark77
하마의 IT 자기개발 이모저모, 백엔드 개발자로 거듭나기
  • stark77
    하마의 개발자 성장일기
    stark77
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 컴퓨터구조와 운영체제
        • 컴퓨터구조
        • 운영체제
      • SQL 기초
      • Spring
        • 백엔드 기초
        • Spring 실습
      • JAVA
        • Java 실습
      • HTML&CSS
        • HTML&CSS 실습
      • Git&GitHub
        • Git&GitHub 실습
      • 내배캠 끄적끄적
        • Today I Learned
      • 유용한 툴 및 사이트 정리
      • 취미
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Github
    jsp
    실시간 데이터 처리
    객체지향
    백엔드 기초
    다형성
    경합조건과 교착상태
    Spring
    웹소켓
    algorithm
    Stomp
    java
    백엔드 기초다지기
    git
    네트워크 기초
    thymleaf
    MVC
    WebSocket
    객체지향프로그래밍
    SpringSecurity
    BEAN
    Java 문법기초
    Spriingboot
    프로세스와 쓰레드
    for문
    String.format
    HTML&CSS
    JPA
    Til
    RestTemplate
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
stark77
[백엔드 기초] 기초 개념 정리하기
상단으로

티스토리툴바