분류 전체보기 81

[Spring_4기 본캠프] Spring 플러스 - Redis | Day 65

1. Redis1) Redis의 데이터 저장 방식- Redis : 키-값(key-value)저장소로, 데이터를 메모리(RAM)에 저장하는 NoSQL 기반의 데이터베이스- 데이터를 key-value 형태로 저장하며, key는 문자열이며 value는 다양한 데이터 타입을 가질 수 있음- 데이터를 빠르게 읽고 쓰기 위해 메모리 기반으로 동작하지만 영속성을 지원해 데이터 유실을 방지할 수 있음 2) Redis의 데이터 저장 흐름◆ 기본 흐름 : 캐시 조회 → 없으면 DB 조회 후 저장⑴ 사용자가 조회 API 를 호출 ex. "GET api/stores/{id}" 호출 ⑵ Redis에서 해당 ID가 캐싱되어 있는지 확인 - 캐시 HIT : 데이터 존재, Redis에서 데이터를 가져와 반환- 캐시 MISS : 데이..

카테고리 없음 2025.02.03

[Spring_4기 본캠프] Spring 플러스 - 쿼리 다루기 | Day 64

1. 쿼리 파일 만들기 (QueryMapper)▶ MyBatis- JDBC Template에 이어 SQL Mapper 두 번째 주자로 탄생- JDBC 프로그래밍 RowMapper가 가지고 있는 단점인 반복되는 코드를 줄이고자 함- SQL 쿼리들을 XML 파일에 작성해 코드와 SQL 분리- jdbc로 처리하는 코드의 설정 부분을 줄이고 실제 sql문에 연결함으로서 빠른 개발- map 인터페이스(혹은 클래스)와 SQL 쿼리와 ResultSet 매핑을 위한 XML 및 애너테이션을 사용- 다른 방식에 비해 객체 자체보다 쿼리에 집중할 수 있음2. 쿼리 코드 만들기 (JpaRepository)1) QueryMapper의 DB의존성 및 중복 쿼리 문제로 ORM이 탄생2) ORM은 DAO 혹은 Mapper를 통해 조..

카테고리 없음 2025.01.23

[Spring_4기 본캠프] Spring 플러스 - AOP | Day 63

1. OOP 객체 지향 프로그래밍의 문제점이 떠오르다- 특정 관심사 업무 코드에 트랜잭션, 보안, 로깅, 접근제어 등의 코드가 존재하게 되면서 핵심 업무와는 관련이 없지만 애플리케이션에 필수적인 부가 기능이 생김- 관심사 관점에서 이러한 부가 기능들을 횡단 관심사로 부르기로 함- 비즈니스 클래스에 핵심 기능과 부가 기능들이 공존하게 되면서 메서드의 복잡도가 증가하고 비즈니스 코드 파악이 어렵게 되었다.- 부가 기능의 불특정 다수 메서드가 반복적으로 구현되면서 횡단 관심사의 모듈화가 어려워짐- 중복되는 부가 기능에 수정 및 삭제가 필요해지면 사용되는 모든 곳에 수정 및 삭제 동작을 해줘야 함  2. AOP (Aspect Oriented Programming) : 관점 지향 프로그래밍* AOP 관련 개념 -..

카테고리 없음 2025.01.22

[Spring_4기 본캠프] Spring 플러스 - Persistence Framework | Day 62

1. JDBC Template (QueryMapper)- JDBC로 직접 SQL을 작성했을 때의 문제> SQL 쿼리 요청 시 중복 코드 발생> DB별 예외에 대한 구분 없이 Checked Exception (SQL Exception) 처리> Connection, Statement 등 자원 관리를 따로 해줘야 함 (자원 해제를 해주지 않으면 메모리가 넘치게 되어 서버가 다운됨) - 위 문제 해결을 위해 두 가지 Persistance Framework가 등장> SQL Mapper : JDBC Template, MyBatis    - SQL Mapper (QueryMapper) : SQL문과 객체(Object)의 필드를 매핑하여 데이터를 객체화> ORM : JPA, Hibernate : SQL Mapper를 ..

카테고리 없음 2025.01.21

[Spring_4기 본캠프] Spring 플러스 - 데이터베이스의 트랜잭션과 드라이버 | Day 61

1. 트랜잭션1) 원자성 (All or Nothing) - 트랜잭션이 데이터베이스에 모두 반영되거나 아니면 전혀 반영되지 않을 것- 트랜잭션은 사람이 설계한 논리적인 작업 단위로서 일처리는 작업단위 별로 이루어져야 사람이 다루는 데에 무리가 없음2) 일관성 (Keep Data Correct)- 트랜잭션의 작업 처리 결과는 항상 일관적이어야 함- 트랜잭션이 진행되는 동안에 데이터베이스가 변경 되더라도 업데이트된 데이터베이스로 트랜잭션이 진행되는 것이 아니라, 처음에 트랜잭션을 진행하기 위해 참조한 데이터베이스로 진행됨 → 일관성 있는 데이터를 볼 수 있음3) 독립성 (Independent)- 둘 이상의 트랜잭션이 동시에 실행되고 있을 경우 어떤 하나의 트랜잭션이라도 다른 트랜잭션의 연산에 끼어들 수 없음 ..

카테고리 없음 2025.01.20

[Spring_4기 본캠프] Spring 플러스 - 데이터 다루기 (SQL) | Day 60

> 데이터베이스에서 데이터 다루기 비유를 통해 쉽게 이해하기1. DDL (Database Determine Language)- CREATE TABLE : 테이블 만들기 → 재료함 만들기. 양파통에는 양파만 넣는다.- ALTER TABLE : 테이블 개조하기 → 재료함 변화주기. 재료를 추가하거나 불필요한 재료 제거- DROP TABLE : 테이블 철거하기 → 사용하지 않는 재료함 없애기 SELECT NAME, COUNT (*) FROM USERS GROUP BY NAME HAVING COUNT (*)>2;- 컬럼 기준으로 GROUP BY- USERS 테이블에서 NAME을 기준으로 GROUP BY(묶고) 2개 이상의 개수를 가진 데이터 조회 SELECT * FROM TODO T JOIN USERS U ON..

카테고리 없음 2025.01.17

[Spring_4기 본캠프] Spring 플러스 - 배포하기 세션 | Day 59

1. 배포 방법 1) ./gradlew build : gradle 과 maven 을 활용해 애플리케이션을 빌드할 수 있다. /build/libs 경로에 빌드파일이 생성된다.2) 빌드파일 종류 - SNAPSHOT.jar : 배포용- SNAPSHOT-plain.jar : 라이브러리용# 라이브러리로 활용하는 예시implementation files('SNAPSHOT-plain.jar') 3) 빌드 파일 실행 // 터미널 명령어java -jar java -jar build/libs/baisc-0.0.1-SNAPSHOT.jar 4) 배포 환경 - 로컬(local) : 개발자 개인 컴퓨터 환경- 개발(dev) : 팀 내 통합된 코드의 기능을 확인하기 위한 환경- 스테이지(stage) : 운영 환경과 동일한 인프라,..

카테고리 없음 2025.01.16

[Spring_4기 본캠프] Spring 플러스 주차 발제 | Day 58

1. 플러스 주차 개인 프로젝트 발제  ( 코드 리팩토링하기 ) Lv1.- 코드 개선 퀴즈 @Transactional의 이해, JWT의 이해, AOP의 이해, 컨트롤러 테스트의 이해, JPA의 이해Lv2.- JPA cascade, N+1, QueryDSL, Spring Security 2. JPA 심화 - 1주차 강의 내용 정리1. 프로젝트 세팅- spring-boot-data-jpa : JPA를 사용해 관계형 데이터베이스를 객체 지향적으로 다룰 수 있게 해주며, Hibernate와 같은 JPA구현체를 자동으로 설정, 레포지토리 디자인패턴의 구현을 쉽게 해줌- querydsl-jpa : QueryDSL은 타입이 안전한 쿼리를 지원하는 프레임워크로, 복잡한 쿼리 작성을 보다 쉽고 안전하게 할 수 있게 해줌..

카테고리 없음 2025.01.14

[Spring_4기 본캠프] Spring 심화 - 아웃소싱 프로젝트 | Day 57

더보기[목차]1. 프로젝트 발제- 요구사항 가이드2. 프로젝트 설계- 컨벤션 정하기- 프로젝트 컨셉, 구조, 흐름 정하기3. 프로젝트 기록- 프로젝트 타임 라인 -> 트러블 슈팅 4. 최종 마무리 단계- 시사점 도출- 이번 프로젝트의 중점 잡기1월 6일부터 새로운 심화 팀 프로젝트가 발제되었다. 그래도 전까진 프로젝트 진행을 하면서 개인적인 기록도 하고 TIL도 꾸준히 작성할 시간이 있었는데, 이번 프로젝트에는 팀장을 맡기도 했고, 내가 구현하게 된 사용자 인증/인가 부분에 대해 지식이 없는 상태로 기능을 구현해야 했던 터라 급하게 아무렇게나 모아놓았던 기록들을 정리해보고자 한다. 1. 데이터베이스와 ORM- 데이터베이스 스키마를 설계할 수 있다.- JPA를 이용해 데이터베이스와 연동할 수 있다.- JP..