1. Springboot란?
: 스프링 프레임워크를 기반으로 한, 스프링을 더 쉽게 이용하기 위한 도구
*프레임워크란?
: 개발 과정을 수월하게 하기 위해 공통적 기능을 라이브러리 형태로 제공하는 것
*스프링 프레임워크란?
: Java를 기반으로 한 웹 어플리케이션 프레임워크
1-1. 스프링 부트의 기능
: 1. 자동 구성 기능
@EnableAutoConfiguration : 스프링 부트의 자동 구성 기능을 활성화하여, Classpath 상 존재하는 다양한 라이브러리를 기반으로 하여 애플리케이션의 설정을 자동으로 처리한다.
2. 내장 서버 기능
: 톰캣과 같은 내장 서버를 제공하여 별도의 서버를 설정하지 않고도, 웹 애플리케이션을 쉽게 실행할 수 있다.
3. 스타터 기능
: 의존성 관리 기능 중 하나로, 특정 기능이나 라이브러리를 사용하기 위해 필요한 의존성들을 묶어서 제공하는 것
*spring - boot : 스프링부트가 기본 제공하는 의존성
- 대표적인 스타터 의존성
- spring-boot-starter-web : 스프링 MVC와 내장 서블릿 컨테이너 등이 포함
- spring-boot-starter-data-jpa : 스프링 데이터 JPA와 Hibernate 등이 포함
- spring-boot-starter-security : 스프링 시큐리티 기능을 사용
1-2. 의존성 주입 (*스프링 핵심 개념)
의존성 주입이란?
: 객체 간의 의존성을 외부에서 주입하는 방식으로, 두 객체 간의 관계를 결정해주는 디자인 패턴
-> 한 객체가 다른 객체를 사용할 때, 의존성이 있다고 이야기합니다.
객체를 직접 생성하거나 관리하지 않고, 외부에서 필요한 객체를 주입받는 것을 의존성 주입이라고 이야기합니다.
Q. 그렇다면 의존성 주입이 필요한 이유는?
의존성 주입은 1. 코드의 결합도를 낮추고 2. 재사용성을 높이며, 3. 유연하고 확장 가능한 애플리케이션을 개발하기 위해 필요합니다.
곧, 의존성 주입을 사용하지 않으면 유연성이 떨어지고 확장 가능한 애플리케이션을 개발하기가 어렵기에 의존성 주입을
사용하게 되는 것입니다.
1-3. 스프링의 의존성 주입 방법
- 생성자 주입 : 의존성을 주입할 때 객체를 생성하거나 생성자를 통해 의존성을 주입하는 방법. 주입되는 의존성이 불변하거나 변경될 일이 없는 경우에 사용됨.
- Setter 주입 : 객체의 Setter 메서드를 이용하여 의존성을 주입함. 생성자 주입과 달리 선택적인 의존성을 주입할 때, 사용됨.
- 필드 주입 : 의존성을 클래스의 필드로 직접 주입하는 방법. 생성자나 setter 메서드를 사용하는 대신 필드를 public 또는 private으로 선언하고 @Autowired 같은 어노테이션을 사용하여 주입함.
1-4. 제어의 역전 (loc)
: 개발자가 객체의 생성과 생명주기 관리를 직접 하지 않고, 프레임워크나 컨테이너가 객체의 생성과 관리를 대신 수행함.

*Spring Bean
: 1) Spring Container가 관리하는 객체를 의미
2) Java 클래스를 Spring Bean으로 등록하여 관리, Bean은 스프링 컨테이너에 의해 생성되고 관리
*Spring Container
: 1) Spring Bean의 생성과 관리를 담당하는 컨테이너
2) 설정 정보를 기반으로 Spring Bean을 생성하고 의존성을 주입, Bean의 생명 주기를 관리
1-5. 관점 지향 프로그래밍 (AOP)
기존의 객체 지향 프로그래밍의 단점인 "핵심 로직과 관심사 분리"의 어려움으로 인해 코드의 유지 보수성이 저하되는 문제가 있었다.
-> 관점 지향 프로그래밍인 AOP는 이러한 문제를 해결하기 위해 개발되었고, 관심사의 분리와 코드의 최소화를 통해 코드의 재사용성과 유지 보수성을 향상한다.
2. MVC란?
MVC 패턴이란? : Springboot에서 사용하는 디자인 패턴
Model : 웹 브라우저 상에서 보여주고 싶은 데이터를 저장하는 공간으로, 데이터베이스에서 정보를 가져온다.
View : 웹 브라우저에서 보이는 화면
Controller : 사용자의 요청을 처리하고, 요청에 대한 처리 로직을 담당한다.
2-1. 스프링부트의 폴더 구조
Controller
: 클라이언트로부터 요청을 받고, 해당 요청에 대한 처리를 수행한다.
: HTTP 요청을 처리한다. (GET, POST, PUT, DELETE 등의 메서드를 가진다.)
Domain
: 애플리케이션의 도메인 모델
: 엔티티 클래스와 DTO(* 데이터 전달을 담당하는 객체) 클래스를 포함한다.
repository
: 데이터 베이스와 상호작용 담당 (데이터 베이스에서 데이터를 읽고 쓰는 작업을 수행)
: CRUD 작업을 수행한다. (save(), findByid(), findAll() 과 같은 메서드를 자동으로 제공한다. -> Spring Data JPA)
service
: 비즈니스 로직 수행 담당 (트랜잭션 관리, 예외처리 등)
: 레포지토리부터 데이터를 가져와 처리
- 사용자가 로그인을 시도하는 경우 / 요청의 처리 흐름 1. 클라이언트의 요청 -> 사용자가 브라우저에서 로그인 정보를 입력하고 제출 2. Dispatcher가 요청을 처리 -> HTTP POST 요청이 서버로 전송되어, Dispatcher Servlet은 요청을 처리할 적절한 controller에게 전달 3. controller가 요청 처리 -> 요청으로부터 로그인 정보를 받음 4. Service에 데이터 전달 -> 로그인 정보를 Service에 전달하여 처리 요청 5. JPA Repository 를 통한 데이터베이스 조회 6. Service 에서 로직 처리 -> 반환된 user 엔티티를 가공하여 로그인 여부 확인 후, 그에 따른 응답을 생성 7. controller 응답 생성 및 클라이언트에게 반환
3. DB (데이터 베이스) 란?
: 데이터베이스(Database)는 데이터를 체계적으로 저장하고 관리하기 위한 시스템 또는 소프트웨어입니다.
: 데이터베이스는 일반적으로 컴퓨터 시스템에 데이터를 구조화하여 저장하고, 데이터에 접근하고 관리하는 방법을 제공합니다.
3-1. 관계형 데이터베이스(RDB) , 관계형 데이터베이스 관리 시스템 (RDBMS) , NoSQL 데이터베이스 이란?
** 관계형 데이터베이스(RDB)
관계형 데이터베이스는 관계형 데이터 모델을 기초로 두고 모든 데이터를 ‘테이블’ 형태로 표현하는 데이터베이스다.
테이블 간의 관계에서 외래키를 이용한 테이블 간 Join 이 가능하다는 것이 큰 특징이다.
** 관계형 데이터베이스 관리 시스템 (RDBMS)
사용자의 요구에 따라 정보를 생성해 관계형 데이터베이스를 생성하고 수정, 관리할 수 있는 소프트웨어
데이터 정의 기능, 데이터 조작 기능, 데이터 제어 기능이 존재한다.
-> 대표적으로 MySQL, Oracle이 있다.
** NoSQL 데이터베이스
NoSQL 데이터베이스는 SQL을 사용하지 않는 데이터베이스 관리 시스템을 지칭하는 "Not Only SQL” 의 약자로 다른 형태의 데이터를 저장한다.
- 관계형 데이터 베이스와 NoSQL 데이터베이스의 차이점

3-2. 데이터베이스의 구성 요소
- 데이터 베이스 : 데이터를 한 곳에 체계적으로 모아 놓은 것
- 테이블 : 데이터베이스에 정보를 저장하는 기본 단위
- 릴레이션 : 데이터의 기본 관리 단위로, 테이블에 해당된다.
- 속성(필드) : 엔티티의 속성을 표현하며, 열 (column)에 해당된다. - 릴레이션의 차수 : 릴레이션에 포함된 속성의 개수
- 튜플(레코드) : 연관된 필드의 집합을 의미하며 행(row)에 해당된다. - 릴레이션의 카디널리티 : 릴레이션에 포함된 튜플의 수
3-3. 데이터 유형 (테이블을 설계할 때 사용되는, 데이터 유형!)
- 1. 숫자형 : INT , DOUBLE
- 2. 문자형 : CHAR , VARCHAR
- 3. 날짜 및 시간 타입 : DATE , DATETIME , TIMESTAMP
- 문자형 : CHAR , VARCHAR의 차이 -> CHAR : 고정 길이 타입, VARCHAR : 가변 길이 타입
3-4. 칼럼의 속성
: 각 칼럼에 추가적으로 설정할 수 있는 제약 조건으로, 데이터 무결성을 지키기 위한 것이다.
*데이터 무결성 : 데이터의 정확성, 일관성, 유효성이 유지되는 것을 보장
1. Primary Key(PK)
: 각 행을 식별하는데 사용되는 고유한 식별자
2. Foreign key(FK)
: 다른 테이블의 기본 키와 관계를 나타내는 칼럼
3. Unique : 중복된 값을 허용하지 않음
4. Not NULL : NULL 값을 허용하지 않음.
5. default : 자동으로 할당되는 값
3-5. 관계의 유형
*Join : 둘 이상의 테이블에서 데이터를 조회하기 위한 방법
* 일대일 관계 : 하나의 A는 하나의 B를 갖는다, 하나의 B는 하나의 A를 갖는다.
* 다대일 관계 : 하나의 A는 여러 개의 B를 갖는다. 하나의 B는 하나의 A를 갖는다.
* 다대다 관계 : 하나의 A는 여러 개의 B를 갖는다. 하나의 B는 여러 개의 A를 갖는다.
3-6. DB에서 사용되는 명령어 (SQL)
1. DML (Data Manipulation Language)
- SELECT : 데이터를 조회하기 위해 사용됨.
- INSERT : 새로운 데이터를 테이블에 삽입할 때 사용됨.
2. DDL (Data Definition Language)
- CREATE : 새로운 데이터베이스 객체(테이블, 인덱스 등)를 생성할 때 사용됨.
3-7. CRUD
** CRUD를 SQL로 바꿔보기
C : create -- > INSERT INTO
R : Read --> SELECT
U : Update --> UPDATE
D : Delete --> DELETE FROM
'[멋쟁이사자처럼 12기] 백엔드 세션' 카테고리의 다른 글
| [멋쟁이사자처럼 12기] 백엔드 세션 _ 4주차 JPA (0) | 2024.04.10 |
|---|---|
| [멋쟁이사자처럼 12기] 백엔드 세션 _ 2주차 자바 / 웹서버 (1) | 2024.03.27 |