[Spring] 캐시를 이용한 인기 검색어 조회 기능 개발 로그
·
Spring
1. 캐시란?데이터나 값을 미리 복사해두는 임시 저장소 라고 생각하면 된다.클라이언트가 증가하면 DB에 대한 요청이 많아지고, 이로 인해 DB가 발생해 성능이 떨어질 수 있다. 이때, 서버와 데이터베이스 사이에 캐시를 두어,주로 자주 사용하는 데이터를 캐시에 임시로 저장해 두면,동일한 요청에 대해서 DB에 직접 접근하지 않고 빠르게 응답할 수 있어 성능이 향상된다.   🤔 이 프로젝트에서 왜 캐시를 사용하였는가?이번 프로젝트에서는 인기 검색어 기능 구현해야 했다. 여러 사용자가 키워드를 입력하여 제품을 검색하면, 해당 검색어는 SearchLog 테이블에 저장된다. 이 테이블을 기반으로 사용자는 인기 검색어를 조회할 수 있다. 하지만 다수의 사용자가 동시에 인기 검색어를 요청하게 되면,SearchLog ..
[플러스 주차 개인과제] 레벨 2 문제 해결 과정
·
Spring
1. JPA Cascade(1) 문제 요구사항   (2) 문제 풀이기존 코드에서는 Todo 엔티티를 저장할 때, 연관된 Manager 엔티티가 자동으로 저장되지 않습니다.따라서 데이터베이스에 Manager 정보가 남지 않아, 별도로 저장해야 하는 번거로움이 있습니다. 이 문제를 해결 하기 위해서 Todo 엔티티의 managers필드에 `cascade = CascadeType.PERSIST`를 적용하였습니다. [수정한 코드]public class Todo extends Timestamped { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String title; private St..
토큰 기반 인증과 JWT: 액세스 토큰과 리프레시 토큰의 핵심 이해
·
Spring
1. 토큰 기반 인증이란?사용자가 서버에 접근할 때, 인증된 사용자인지 확인하는 방법은 크게 두 가지로 나뉜다. (1) 토큰 기반 인증 vs 세션 기반 인증1️⃣ 토큰 기반 인증클라이언트가 토큰을 보관하고 요청 시 전송 → 서버는 무상태성 유지2️⃣ 세션 기반 인증 서버가 사용자 정보를 세션으로 저장 → 상태 유지 필요 1️⃣ 토큰 기반 인증토큰은 서버에서 클라이언트를 구분하기 위한 값으로, 서버에서 토큰을 생성하여 클라이언트에 제공한다.클라이언트를 해당 토큰을 저장하고 있다가 API 요청시 함께 전송한다.서버는 토큰을 검증하여 유효한 사용자인지 확인한다.서버가 인증 정보를 저장하지 않기 때문에 무상태성을 유지할 수 있고, 확장성이 뛰어나다. 2️⃣ 세션 기반 인증서버는 사용자마다 세션을 생성하여 사용자..
모든 HTTP 요청 헤더 정보 출력하기
·
Spring
💡 전체 코드 Spring Boot에서 클라이언트의 요청(Request)에 포함된 헤더를 확인해야 할 때가 있습니다.로그를 활용하여 모든 요청 헤더 정보를 출력하는 방법을 알아보겠습니다. 아래 코드는 request의 모든 헤더를 가져와 로그에 출력하는 코드입니다.import javax.servlet.http.HttpServletRequest;import java.util.Enumeration;public void logRequestHeaders(HttpServletRequest request) { log.info("=== [모든 요청 헤더 출력] ==="); request.getHeaderNames().asIterator() .forEachRemaining(headerNa..
연관관계 매핑의 기본 전략 : 단방향, 양방향, 연관관계 유형 (1:1, 1:N, N:1, N:M)
·
Spring
1️⃣ 단방향 연관관계단방향 연관관계는 한 엔티티가 다른 엔티티를 참조하지만, 그 반대는 성립하지 않는 관계를 의미합니다.즉, 한 쪽 방향으로만 연관관계가 설정되어 있어,참조하는 엔티티는 다른 엔티티를 인식할 수 있지만, 참조 받는 엔티티는 이를 알 수 없습니다. 관계가 한 방향으로만 정의되므로, 구현과 관리가 상대적으로 간단합니다. 연관관계의 소유자(주로 참조하는 엔티티)만이 외래키(FK)를 관리합니다.데이터베이스에서는 한쪽 테이블에만 외래키 컬럼이 존재하게 되어 연관관계의 단순한 처리와 관리가 가능합니다. 🔍 예시 ) 단방향 @OneToOnePerson(사람) 엔티티가 Passport(여권) 엔티티를 참조하는 관계로,Person에서만 Passport를 알고 있으며, Passport에서는 Person..