2주차 (8.26, 8.28) - SQL & 스프링부트 구조
1. 기본 개념 정리
•
SQL: 데이터베이스를 다루는 언어
•
데이터베이스(DB): 정보를 저장하는 시스템
•
RDB (관계형 데이터베이스): Oracle, MySQL, MariaDB, MS-SQL
•
NoSQL (예: MongoDB): 비관계형 데이터베이스 (DynamoDB 등)
•
라이브러리: 코드 묶음 (필요할 때 가져다 쓰는 도구)
•
프레임워크: 개발을 위한 뼈대 (예: Spring, Spring Boot)
2. Java 기초 개념
Stream 만들기
•
Stream<>을 사용해 생성 가능
중간 연산 vs 최종 연산
•
중간 연산: 연산 결과가 Stream
◦
예: filter(), map()
•
최종 연산: 연산 결과가 Stream이 아님
◦
예: forEach(), collect()
객체 관계
•
상속 (is-a)
◦
extends (클래스-클래스, 인터페이스-인터페이스)
◦
implements (클래스-인터페이스)
•
포함 관계 (has-a) → 변수
final 키워드
•
final 변수: 상수
•
final 메서드: 오버라이딩 불가
•
final 클래스: 상속 불가
초기화 방법
•
생성자: 클래스명과 같고 리턴형 없음
•
선언 시 초기화
•
초기화 블럭
※ "에러: 클래스와 이름이 같고 리턴형 없음" → 오타, 생성자가 맞음
3. 스프링부트 3 구조 이해
학습 목표
•
스프링부트 3의 계층 구조와 실행 과정 이해
•
프로젝트 구조 파악
계층 구조
1.
Controller (프레젠테이션 계층)
•
HTTP 요청 → Service 전달
•
예: TestController
2.
Service (비즈니스 계층)
•
핵심 로직 처리
•
권한, 유효성 검사, 비즈니스 로직 담당
•
예: TestService
3.
Repository (퍼시스턴스 계층)
•
DB 접근/처리
•
JPA/DAO 사용
•
예: MemberRepository
프로젝트 기본 구조
•
main: 실제 코드 작성 공간
•
test: 테스트 코드 작성 공간
•
build.gradle: 빌드 설정
•
settings.gradle: 프로젝트 정보
프로젝트 발전시키기
•
의존성 추가 (build.gradle)
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
runtimeOnly 'com.h2database:h2'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
Plain Text
복사
•
계층별 코드 구현
◦
Controller: 요청 처리
◦
Service: 비즈니스 로직
◦
Entity: DB 매핑
◦
Repository: DB 접근
•
샘플 데이터 (resources/data.sql)
INSERT INTO member (id, name) VALUES (1, '이름1');
INSERT INTO member (id, name) VALUES (2, '이름2');
INSERT INTO member (id, name) VALUES (3, '이름3');
SQL
복사
•
환경 설정 (application.yml)
spring:
jpa:
show-sql: true
properties:
hibernate:
format_sql: true
defer-datasource-initialization: true
YAML
복사
요청-응답 과정 요약
1.
클라이언트 → HTTP 요청 (톰캣)
2.
Controller → 요청 처리
3.
Service/Repository → 로직 & DB 처리
4.
View Resolver & Template Engine → 응답 생성 (HTML, JSON 등)
5.
Dispatcher Servlet → 클라이언트 응답 반환
핵심 요약
•
Controller → 요청 전달
•
Service → 로직 처리
•
Repository → DB 처리