일시적으로 데이터 하위 집합을 저장하는 고속 데이터 스토리지 계층이다. 이후 해당 데이터에 대한 요청이 있을 경우 데이터의 기본 스토리지 위치에서 읽어오는것 보다 더 빠르게 응답하여 요청을 처리할 수 있따. 캐싱을 사용하면 이전에 조회하고 계산했던 데이터에 대해서 효율
클라이언트(예: 모바일 디바이스, 브라우저 등)가 이전에 요청했던 데이터와 최신 데이터의 변경사항 유무를 검증하는데 사용하는 HTTP 응답헤더이다.클라이언트가 서버로부터 리소스를 요청할 때 응답 헤더로 Etag 값이 반환된다.GET요청과 HEAD요청에서 사용된다.리소스
우이삭 프로젝트에 캐시를 도입하기로 했다. 로컬 캐시인 Caffeine Cache를 적용한 이유는 다음과 같다.1\. Redis는 비용이 비싸다. Caffeine Cache는 비용이 발생하지 않는다.2\. 현재 프로젝트는 단일 서버 구조이다.Java의 캐시 라이브러리이
데이터를 삭제하는 방법에는 두가지 방법이 있다. Hard delete : DB의 데이터를 삭제 Soft delete : 실제 DB의 데이터를 삭제하지 않고 deleted와 같은 컬럼을 true로 update Hard delete의 경우 'Delete from member where id = 1'와 같은 쿼리를 날려서 데이터를 삭제하는것이고 Soft del...
우이삭 프로젝트를 진행하면서 팀원들이 Enum Validation을 적용하였다. 기존에 @Valid를 통해서 HTTP request를 통해 body에 담긴 값들을 DTO에서 String, Integer와 같은 클래스에 @NotNull과 같은 애너테이션을 활용하여 값을
프로젝트를 진행하면서 SpringSecurty부분을 구현하면서 팀원들과 대화가 안되어 너무 답답한 마음에 공부한것을 작성합니다.대부분 ChatGPT와 대화 형식으로 궁금한 부분들을 질문하며 공부한 내용입니다.인증과 인가에 대한 개념은 다른 글에서 작성했으므로 생략.Re
프로젝트 내에서 Game기능을 구현하였다. 이를 테스트 하던 중 두명의 사용자가 로그인 후 커플을 맺으면 세션 내에 coupleId가 들어가지 않는 현상을 발견하였다. 이를 팀원인 '도연님'이 해결해주셨는데 Security는 아직 잘 모르겠고 EventListener
회원 프로필 수정기능 구현에서 프로필 사진을 수정하기 위해서 기존의 이미지를 S3에서 삭제하고 새로운 이미지를 S3에 업로드 하는 기능을 구현해야했다.이 과정에서 공부한 내용을 정리한다.이미지를 업로드 하기 위해서는 클라이언트에서 서버로 요청을 보낼때 헤더의 conte
데이터베이스 관리에서 락(Lock)은 중요한 개념입니다. 특히, 동시에 여러 사용자나 서비스가 하나의 데이터에 접근하는 환경에서 데이터 무결성을 유지하는 것은 필수적인 과제입니다. JPA(Java Persistence API)에서 제공하는 Optimistic Lock은
Controller를 테스트하기 위해 @WebMvcTest를 사용하였다. 하지만 'JPA metamodel must not be empty' 예외 문구가 발생하며 테스트에 실패하였다.왜 이런 문제가 발생하는지 공부하며 알게 된 것들이 많아 정리해보려 한다.Spring
OrderServiceTest.java OrderService.java createOrderWithStock 테스트를 실행시켰을때의 로그 로그를 분석하며 2가지의 의문점이 생겼다. 처음에 엔티티들을 save하는 과정에서 영속성 컨텍스트에 product와 stock