3단계 – 데이터 지속성과 Streams (2~3개월)
기본 SQL
- DDL:
CREATE,ALTER. - DML:
SELECT,INSERT,UPDATE,DELETE. - Joins:
INNER,LEFT,RIGHT. - Keys: Primary Key와 Foreign Key.
- 정규화: 1NF, 2NF, 3NF.
- 예제: 제품 및 카테고리 테이블 생성.
JDBC와 Connection Pool
- Classes:
Connection,Statement,PreparedStatement,ResultSet. - Connection Pool (HikariCP) 사용.
- 모범 사례:
try-with-resources,SQLException처리.
Hibernate + JPA 실습
- Annotations:
@Entity,@Id,@ManyToOne,@OneToMany. - 설정:
persistence.xml또는application.properties. EntityManager를 사용한 CRUD 작업.- Flyway 또는 Liquibase를 사용한 데이터베이스 마이그레이션 소개.
NoSQL 데이터베이스 소개
- 개념: 문서, 컬렉션, 수평적 확장성.
- MongoDB: 설정, MongoRepository를 사용한 CRUD 작업.
- Spring Data MongoDB: Spring Boot와의 통합.
- 예제: MongoDB에 제품의 시스템 활동 로그 저장.
Streams와 Lambda Expressions
- 작업:
filter,map,sorted,collect,forEach,reduce. - 예제: 가격으로 제품 필터링, 이름으로 정렬.
Optional과 Functional Interfaces
Optional:orElse,ifPresent,orElseThrow.- Functional Interfaces:
Function,Predicate,Consumer. - 예제: Streams에서 데이터를 필터링하기 위해
Predicate사용.
고급 Collections
- LinkedList: 효율적인 삽입/삭제.
- TreeMap: 정렬된 key-value 쌍.
- PriorityQueue: 우선순위 큐.
- LinkedHashMap 및 Deque (소개).
로깅 (SLF4J/Logback)
- SLF4J와 Logback 설정.
- 레벨:
INFO,DEBUG,ERROR. - 예제: Hibernate 쿼리 로깅.
트랜잭션 개념 (ACID)
- 원자성, 일관성, 격리성, 지속성.
- JDBC (
commit,rollback) 및 Hibernate (@Transactional)를 사용한 트랜잭션.
인덱스와 실행 계획
- Indexes: Primary, Unique, Composite.
- 쿼리 최적화를 위한 EXPLAIN 사용.
- 예제: 자주 검색되는 컬럼에 인덱스 생성.
파일 조작 (선택 사항)
Files,BufferedReader를 사용한 읽기 및 쓰기.- 예제: Streams를 사용하여 CSV로 제품 보고서 내보내기.
데이터베이스 테스트 (소개)
- H2 및 JUnit를 사용한 통합 테스트.
- 예제: Hibernate를 사용한 CRUD 작업 테스트.
최종 프로젝트
제품 관리 시스템
- 데이터베이스: Product 및 Category 테이블 (1:N 관계).
- Java: JPA (Product, Category)를 사용한 클래스, Hibernate로 CRUD.
- 선택 사항: MongoDB에 제품 변경 로그 저장.
- 선택 사항: MongoDB에 동적 제품 속성 (예: 기술 사양) 저장.
- Streams: 제품 필터링/정렬 (예: 가격 또는 카테고리 기준).
- 로깅: 데이터베이스 작업 모니터링.
- Git: 기능별 commit (예: feature/crud, feature/streams).
- 설명이 포함된 README와 함께 GitHub에 공개.