⏰ 2024. 05. 20 월
✔ 스프링 이론 강의를 듣고 정리하면서 작성했습니다.
3 Layer Architecture
하나의 클래스에서 모든 API의 처리를 수행하고 있는 경우, 너무 많은 기능이 하나의 클래스에 존재해 매우 복잡하고 문제 발생 시 유지보수가 어렵기 때문에, API의 기능의 처리 과정을 크게 Controller, Service, Repository 3계층으로 분리해 작성하는 것을 3 Layer Architecture 라고 부른다.
클라이언트로부터 받은 요청과 Request 데이터를 Service에 전달하고, Service에서 처리 완료된 결과를 클라이언트에게 응답을 전달하는 계층
Controller에서 전달받은 요청의 요구사항을 처리하는 비지니스 로직을 수행하고, DB저장 및 조회가 필요할 때는 Repository 계층에 요청하는 계층
DB 연결, 해제, 자원 관리 등의 DB 관리 기능을 수행하고, CRUD 작업을 통해 얻은 데이터를 Service 계층에 전달하는 계층
IoC와 DI
IoC와 DI는 설계 원칙과 디자인 패턴, 즉 IoC는 설계 원칙이고, DI는 디자인 패턴으로 좋은 코드 작성을 위한 Spring의 핵심 기술이다.
Spring에서는 DI 패턴을 사용하여 IoC 설계 원칙을 구현하고 있다. 즉, 의존성 주입을 통해 제어의 역전을 구현하고 있다.
기존의 구현객체는 객체의 생성 및 실행, 생명주기 관리, 제어 등을 개발자가 직접 해야하지만, IoC는 개발자는 직접 객체를 생성하지 않고, 외부 조립기가(IoC Container) 해당 제어권을 가져와 객체의 생명주기를 컨트롤 함으로써, 의존 관계의 방향이 달라지게 되는 것을 의미한다.
DI(Dependency Injection)는 IoC를 구현하기 위해 사용하는 디자인 패턴 중 하나로, 이름 그대로 객체의 의존관계를 객체 기준의 외부에서 주입시키는 패턴이다.
DI의 3가지 조건
DI 방법 3가지
Bean은 Spring이 관리하는 객체이고, IoC Container는 Bean을 모아둔 컨테이너이다.
@Autowired 적용 조건 : IoC Container에 의해 관리되는 Bean 객체만 사용 가능
@Autowired 생략 조건 : 생성자 선언이 1번일 경우 생략가능
JPA
ORM은 Object-Relational Mapping의 약자로 객체와 DB의 관계를 매핑해주는 도구이고, SQL 작업을 줄여주기 위한 기술이다.
JPA는 자바에서 사용되는 자바 ORM 기술에 대한 표준 명세이다.
JPA는 애플리케이션과 JDBC 사이에서 동작한다. 그리고 DB 연결 과정을 직접하지 않아도 자동으로 처리해주고, 객체를 통해 간접적으로 DB 데이터를 다룰 수 있어 매우 쉽게 DB 작업을 처리한다.