본문 바로가기
스파르타 내배캠

[TIL] #18. spring 2주차 강의

by saemsaem 2024. 5. 17.


 

 [ Spring 입문주차 1주차 강의 ] 

3 layer Architechture

: 서버 처리 과정을 controller, service, repository 3개로 분리하는 것

1. controller : client의 요청을 받고 요청을 service에 전달
→ service가 요청에 대한 로직 실행 → 처리 완료된 결과를 controller에 전달 → controller는 client에게 응답

2. service : 사용자의 요구사항(비즈니스로직) 처리
→ DB 저장/조회 필요 시 repository에게 요청

3. repository : DB 관리

 

IoC, DI

- 좋은 코드(간단한 논리, 중복 제거, 명확한 표현 ,,,)을 구현하기 위함
- "DI 패턴을 사용해서 IoC를 구현한다"

IoC (Inversion Of Control) : 모든 객체에 대한 제어권이 바뀌었음을 의미 (의존관계를 해결하기 위한 디자인 패턴)

DI (Dependency Injection) : 객체를 직접 생성하는 것이 아니라, 외부에서 생성 후 주입시키는 방식
  - 의존성 
      + interface, 다형성의 원리를 사용하여 강한 결합을 약한 결합으로 바꿀 수 있음
  - 주입 : 필요한 객체를 전달하는 것
      1. field를 통한 주입
      2. method를 통한 주입
      3. constructor를 통한 주입

 

IoC Container와 Bean

- DI를 위해서는 객체의 생성이 우선되어야 함
   => spring framework가 생성/관리의 역할을 함

Bean : Spring이 관리하는 객체
Ioc Container : Bean을 모아둔 컨테이너

Bean으로 등록하는 방법 : @Component를 해당 클래스에 등록
  → spring framwork 가 @Component를 통해 Bean을 객체로 가지고 있다가,
   의존성 주입이 필요할 때 @AutoWired를 통해 알려준다

 

JPA

ORM : 객체와 DB를 mapping해주는 도구
JPA : java ORM 기술의 표준 명세 (Hibernate)

 

Entity

: JPA에서 관리되는 객체 (클래스)

 

영속성 컨텍스트

- entity 객체를 효율적으로 관리하기 위함

EntityManager : entity 관리자
   - entity 저장/조회/수정/삭제

EntityManagerFactory : EntityManager를 생성
   - persistance.xml 

Transaction
   - transactioin 상태에서 SQL 실행 → 모두 문제 없이 수행되면 → 실제 DB 반영 (commit)
   - 영속성 컨텍스트로 관리하고 있던, 변경이 발생한 entity 객체들의 정보를 '쓰기 지연 저장소'에 전부 가지고 있다가, commit 되면 요청을 반영함
   - 효율적인 관리 가능

'스파르타 내배캠' 카테고리의 다른 글

[TIL] #20. Transaction  (0) 2024.05.20
[TIL] #19. Spring + JPA  (0) 2024.05.17
[TIL] #17. UseCase Diagram, ERD  (0) 2024.05.14
[TIL] #16. spring 1주차 강의  (0) 2024.05.13
[TIL] #15. KPT 회고  (0) 2024.05.10