본문 바로가기
백엔드/내일배움캠프_Java단기심화8기

[TIL] Spring 입문주차 2주차

by alswlfl 2026. 6. 25.

오늘 한 일

10:00 ~ 11:00 알고리즘 코드카타 풀기(2문제)
11:00 ~ 13:00 Spring 입문주차 강의 수강(IoC와 DI)
14:00 ~ 15:40 Spring 입문주차 강의 수강(JPA Core)

 


배운점

1. IoC(제어의 역전)과 DI(의존성 주입)

  • IoC과 DI로 강한 결합을 느슨한 결합으로 만들기
  • Bean: Spring이 관리하는 객체
  • Spring IoC 컨테이너: Bean을 모아둔 컨테이너
  • Bean 등록 > @Component, @ComponentScan
  • 의존성 주입(필드 주입, 메서드로 주입, 생성자로 주입) > @Autowired, Lombok의 @RequiredArgsConstructor
  • 3 Layer Annotation: @Controller, @Service, @Repository, @RestController 존재

2026.06.25 - [백엔드/spring&springboot] - [내일배움캠프_Spring Boot 입문주차] IoC와 DI

 

[내일배움캠프_Spring Boot 입문주차] IoC와 DI

IoC(제어의 역전), DI(의존성 주입) 이해하기Spring의 IoC와 DI﹡IoC와 DI는 객체지향의 SOLID 원칙 혹은 GoF의 디자인 패턴과 같은 설계 원칙 및 디자인 패턴임IoC는 설계 원칙에 해당하고, DI는 디자인 패

basicconcept.tistory.com

 

2. JPA Core

  • ORM: 객체와 데이터베이스를 매핑해주는 도구
  • JPA: Java ORM 기술의 대표적인 표준 명세
  • Hibernate: JPA를 실제로 구현한 프레임워크
  • Entity: JPA에서 관리되고 있는 객체
  • 영속성 컨텍스트: Entity 객체를 효율적으로 쉽게 관리하기 위해 만들어진 공간
    • 영속성 컨텍스트에 접근해 Entity 객체를 조작하기 위해서는 EntityManager 필요
    • EntityManager는 EntityManagerFactory를 통해 생성해 사용함
    • EntityManagerFactory는 DB 하나에 하나만 생성되어 애플리케이션이 동작하는 동안 사용됨
  • 트랜잭션: DB 데이터들의 무결성과 정합성을 유지하기 위한 하나의 논리적 개념
    ﹡모든 SQL이 성공이면 DB에 영구적으로 변경 반영, 하나라도 실패하면 모든 변경 되돌림
  • JPA 트랜잭션: 영속성 컨텍스트로 관리하고 있는 변경이 발생한 객체들의 정보를 쓰기 지연 저장소에 전부 가지고 있다가 마지막에 SQL을 한 번에 DB에 요청해 변경 반영함
  • 영속성 컨텍스트 기능
    • 1차 캐시: 저장하는 Entity 객체들이 캐시 저장소인 1차 캐시에 저장됨(Map 자료구조 형태: key[식별자 값]-value[객체])
      → DB 조회 횟수 줄이고, 객체 동일성 보장
    • 쓰기 지연 저장소(ActionQueue): 트랜잭션처럼 쓰기 지연 저장소를 만들어 SQL을 모아두고 있다가 트랜잭션 commit 후 한 번에 DB에 반영
      flush(): 영속성 컨텍스트의 변경 내용들을 데이터베이스에 반영하는 역할 수행
    • 변경 감지(Dirty Checking): 영속성 컨텍스트에 Entity 저장할 때 최초 상태(LoadedState)를 저장한 후, 트랜잭션이 commit되고 em.flush();가 호출되면 Entity의 현재 상태와 저장한 최초 상태 비교함
      변경 내용이 있다면 Update SQL을 생성해 쓰기 지연 저장소에 저장하고 모든 쓰기 지연 저장소의 SQL을 DB에 요청
  • Insert, Update, Delete와 같이 데이터를 변경하는 SQL을 데이터베이스에 요청 및 반영하기 위해서는 트랜잭션 환경이 반드시 필요함

2026.06.25 - [백엔드/spring&springboot] - [내일배움캠프_Spring Boot 입문주차] JPA CORE

 

[내일배움캠프_Spring Boot 입문주차] JPA CORE

JPA란?DB를 직접 다룰 때의 문제점1. 애플리케이션에서 아래 형태의 객체 데이터를 DB에 저장해서 관리해야 한다면?public class Memo { private Long id; private String username; private String contents;}DB 테이블 생성

basicconcept.tistory.com

 

3. Spring Data JPA

  • Spring Boot 트랜잭션@Transactional 어노테이션 걸면됨
  • Spring 컨테이너 환경에서는 영속성 컨텍스트와 트랜잭션의 생명주기가 일치
  • Spring에서는 트랜잭션 전파 기능 제공으로 Service부터 Repository까지 Transaction을 유지할 수 있음
  • Spring Data JPA는 JPA를 쉽게 사용할 수 있게 만들어놓은 하나의 모듈로, JPA를 추상화시킨 Repository 인터페이스 제공
  • Spring Data JPA는 시간에 대해서 자동으로 값을 넣어주는 기능인 JPA Auditing 제공
  • Spring Data JPA는 method 이름으로 SQL을 생성할 수 있는 Query Methods 기능 제공

2026.06.26 - [백엔드/spring&springboot] - [내일배움캠프_Spring Boot 입문주차] Spring Data JPA

 

[내일배움캠프_Spring Boot 입문주차] Spring Data JPA

Spring Boot 환경에서의 JPASpring Boot 환경에서는 EntityManagerFactory랑 EntityManager를 자동으로 생성해줌application.properties에 데이터베이스 관련 정보를 주면, 정보를 바탕으로 자동으로 EntityManagerFactory 만

basicconcept.tistory.com


내일 할 일

  • Spring 숙련 강의 듣기