[ 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 |