728x90
반응형
SMALL

spartabootcamp 50

3_1.Spring AOP를 활용한 로깅 및 예외 처리

학습내용AOP란?AOP Spring 적용예외처리와 로깅실행시간 측정실습학습정리1. AOP란?관점 지향 프로그래밍 (Aspect-Oriented Programming)의 약자공통 관심사를 모듈화하여 비즈니스 로직과 분리하는 프로그래밍 패러다임 (로깅,트랜잭션 관리 등)공통 관심사를 분리하여 가독성,유지보수성 높임2. AOP Spring 적용예시 코드import lombok.extern.slf4j.Slf4j;import org.aspectj.lang.JoinPoint;import org.aspectj.lang.annotation.Aspect;import org.aspectj.lang.annotation.Before;import org.springframework.stereotype.Component;@Sl..

TIL 2025.01.10

2_5.QueryDSL 활용

학습내용QueryProjection실습학습정리1. QueryProjection 사용하기QueryProjection이란 ? QueryDSL에서 DTO에 데이터를 매핑하기 위한 방법DTO 클래스에 @QueryProjection 에너테이션을 추가하여 매핑 지원예시@Getter@Builder@FieldDefaults(level = AccessLevel.PRIVATE)public class ProductResponse { String name; String description; BigDecimal price; Integer stock;//해당 에너테이션 생성자에 추가// 빌드시에 build/generated/sources/annotationProcessor 해당 Q클래스 생성 @QueryProjecti..

TIL 2025.01.10

2_4.QueryDSL 설정 및 활용

학습내용QueryDSL 개요 및 설정동적 쿼리 사용학습정리1. QueryDSL 개요 및 설정타입안전한 JPQL 쿼리를 작성 할 수 있도록 지원하는 프레임 워크코드 기반으로 동적 쿼리를 작성 할 수 있어 유지보수,가독성이 향상의존성 추가dependencies { implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' //annotaionProcessor 밑에 예제에선 lombok,mapstruct 밑에 작성 annotationProcessor "com.querydsl:querydsl-apt:5.0.0:jakarta" annotationProcessor "jakarta.annotation:jakarta.annotation-api" ..

TIL 2025.01.10

2_3.JPA 고급 쿼리 최적화 및 트랜잭션 이해

학습내용트랜잭션Spring 트랜잭션 관리Flush와 Dirty Checking실습학습정리1. 트랜잭션트랜잭션 개념정의 : 데이터베이스에서 한번에 실행되는 작업 단위, 하나의 논리적 작업 단위가 성공적으로 완료되거나, 전부 실패하도록 보장, 데이터 무결성과 일관성 유지필요성 : 여러 작업이 함께 수행될 때, 중간에 오류가 발생시 이전 작업으로 되돌릴 수 있도록 보장ACIDAtomicity (원자성): 트랜잭션 내의 작업은 모두 성공하거나 모두 실패해야 합니다.Consistency (일관성): 트랜잭션 수행 전후 데이터가 일관성을 가져야 합니다.Isolation (고립성): 동시에 실행되는 트랜잭션은 서로의 작업에 영향을 미치지 않아야 합니다.Durability (지속성): 트랜잭션이 성공적으로 완료되면 ..

TIL 2025.01.10

2_2.엔티티 심화, 지연 로딩과 즉시로딩, N+1 문제

학습내용JPA 로딩전략N+1 문제 이해 및 해결실습학습정리1. JPA 로딩전략지연로딩 (Lazy Loading) : 데이터가 실제로 필요할 때 조회 쿼리가 실행되는 로딩 방식, 보통 이 방식으로 진행장점 : 초기 로딩속도가 빠르고, 불필요한 데이터 로딩 방지단점 : 필요할 때마다 추가 쿼리가 발생할 수 있어 성능 저하예제# User엔티티@OneToMany(mappedBy = "user", fetch = FetchType.LAZY)private List orders;# 동작User user = userRepository.findById(1L);System.out.println(user.getOrders()); // 이 시점에서 쿼리가 실행됨.# 쿼리결과 사용시에 order 쿼리실행 select o1..

TIL 2025.01.09

2_1.DB 설계 기본 개념 및 연관관계 매핑

학습내용단일 테이블 구조 설계테이블 간 연관관계 설계기타 실습학습정리1. 단일 테이블 구조 설계테이블의 필수 요소Primary Key : 테이블 내에서 각 행을 고유하게 식별하는 필드컬럼 : 테이블의 데이터를 저장하는 기본 단위데이터 타입 : 각 컬럼에 저장될 데이터의 종류테이블 설계 예제CREATE TABLE users ( id BIGINT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL, email VARCHAR(255) NOT NULL UNIQUE, password VARCHAR(255) NOT NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT C..

TIL 2025.01.09

1_5. CRUD 구현과 MapStruct

학습내용의존성 주입방법Service 네이밍 규칙MapStruct 실습학습 정리1. 의존성 주입방법Field Injection# 필드에 직접 의존성 주입하는 방식으로 @Autowired 사용@Servicepublic class UserService { @Autowired private UserRepository userRepository;}Constructor Injectin# 생성자를 통해 의존성을 주입하는 방법 SpringBoot에서는 @Autowired 없어도 자동으로 주입# 대부분 해당 방식으로 의존성 주입@Servicepublic class UserService { private final UserRepository userRepository; public UserServic..

TIL 2025.01.09

1_3.RESTful API 설계와 데이터 검증, Lombok 심화

학습 내용데이터 검증과 ValidationLombok학습 정리1. 데이터 검증과 Validation의존성 주입implementation 'jakarta.validation:jakarta.validation-api:3.0.2'implementation 'org.hibernate.validator:hibernate-validator:7.0.2.Final'주요 Validation 애너테이션@NotNull(message = "값이 null이 아니어야 함.")private String name;@Size(min =2, max = 20, message = "문자열 또는 컬렉션 크기제한")private String name;@Pattern(pegex = "^\\d{10}$", message = "값이 특정 정귝식을 ..

TIL 2025.01.09

1_2.Spring MVC와 Controller 설계, 공통 에러

학습 내용CRUD 구조와 HTTP 메서드 이해공통 응답 처리공통 에러 처리학습 정리1. CRUD 구조와 HTTP 메서드 이해CRUD 동작과 HTTP 메서드 매핑작업HTTP 메서드엔드포인트 예시조회 (Read)GET/api/products/{id}생성 (Create)POST/api/products수정 (Update)PUT/api/products/{id}삭제 (Delete)DELETE/api/products/{id}예제 코드@RestController@RequiredArgsConstructor@RequestMapping("/api/products")public class ProductController {private final ProductService productService;@GetMappingpub..

TIL 2025.01.09

1_1.Spring Framework 환경 구성

학습 내용Spring Framework 특징 및 구조WASSpring Boot 프로젝트 생성디렉토리 구조주요 라이브러리 설정학습 정리1. Spring Framework 특징 및 구조특징의존성 주입 (Dependency Injection) : 객체 간의 의존 관계를 외부(스프링 컨테이너)에서 주입하여 결합도를 낮춤AOP (Aspect Oriented Programming) : 공통 관심사 (로깅,트랜잭션)를 분리하여 코드 재사용성을 높임 #추후에 해당 부분에 대해 다룸강력한 생태계구조 Controller : 클라이언트 요청 처리Service : 비즈니스 로직을 구현Repository : 데이터베이스와 상호 작용2. WASWAS(Web Application Serv)는 HTTP 요청과 응답을 관리하고 비즈니..

TIL 2025.01.09
728x90
반응형
LIST