오늘 한 일
| 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에 요청
- 1차 캐시: 저장하는 Entity 객체들이 캐시 저장소인 1차 캐시에 저장됨(Map 자료구조 형태: key[식별자 값]-value[객체])
- 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 숙련 강의 듣기
'백엔드 > 내일배움캠프_Java단기심화8기' 카테고리의 다른 글
| [TIL] Spring 숙련주차 1주차(Spring Security, Validation) (0) | 2026.06.29 |
|---|---|
| [TIL] Spring 숙련주차 1주차(Bean, 인증과 인가, 쿠키-세션, JWT) (0) | 2026.06.26 |
| [TIL] Spring 입문주차 강의(메모장 프로젝트 만들기, Database) (0) | 2026.06.24 |
| [TIL] Spring 입문주차 강의(테스트 코드&Spring MVC) (0) | 2026.06.23 |
| [TIL] OT 및 Spring 입문 주차 강의 듣기 (0) | 2026.06.22 |