일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 달빛캠퍼스
- 백준
- Algorithm
- HashMap
- Java
- SWEA
- 달빛클럽
- programmers
- 경제공부
- 알고리즘
- 자바
- Stack
- 달빛클럽 1기
- 프로그래머스
- 노마드코더 강의
- 달빛클럽1기
- BOJ
- 리액트
- 재귀
- dfs
- ReactJS로 영화 웹 서비스 만들기
- SoftwareExpertAcademy
- React.js
- Array
- 인플레이션에서 살아남기
- 카카오블라인드코딩테스트
- JPA
- 노마드코더
- React
- 완전탐색
- Today
- Total
th42500의 TIL
Entity Manager 👉 엔티티 저장, 수정, 삭제, 조회 등 엔티티와 관련된 모든 일을 처리 👉 엔티티를 저장하는 가상의 데이터 베이스 👉 데이터 베이스 연결이 꼭 필요한 시점까지 커넥션을 얻지 ❌ Entity Manager Factory 👉 Entity Manager를 만드는 공장 👉 Entity Manager Factory를 만드는 비용은 크므로 1개만 생성하여 이를 공유함 👉 여러 스레드가 동시에 접근해도 안전하므로 서로 다른 스레드 간에 공유해도 괜찮음 👉 But, Entity Manager는 여러 스레드가 동시에 접근하면 동시성 문제가 발생하므로 스레드 간에 공유 ❌

🛠 실습 환경 Java 17 Spring Boot 3.0.5 Querydsl 1.0.10 📌 발생한 에러 김영한님의 `실전! Querydsl` 강의를 듣다가 처음으로 에러를 마주하였다. Test 코드를 실행하니 아래와 같은 에러 메세지가 발생하였다. 에러 메세지의 내용은 새로 생성한 QHello 파일을 덮어씌울 수 없다는 의미인 것 같았다. ❗ 해결 방법 1️⃣ Gradle 탭에 있는 build 👉 clean을 이용하여 기존에 생성되어 있던 QHello를 제거 2️⃣ 다시 Test를 실행 ⚠ 1️⃣ 단계에서 clean을 이용하여 QHello를 제거하였기 때문에 QHello 관련 코드가 빨간색으로 변할 수 있지만 이는 신경쓰지 않고 그대로 테스트를 실행하면 된다. 테스트가 통과되는 것을 확인 할 수 있다.

❓ 발생한 문제 좋아요 기능 테스트 진행 중 Result에 Null 값이 담겨 테스트에 실패하게 되었다. 🔎 왜 Null값이 담길까? 원인을 알아보고자 디버깅을 통해 RecipeRestControllerTest.java 와 RecipeRestController.java 에서의 userName이 다르다는 것을 확인할 수 있었다. 💡 해결 방법 @WithMockUser 에 테스트하고자 하는 userName을 설정해줌으로써 해결할 수 있었다. package com.woowahan.recipe.controller.api; import com.fasterxml.jackson.databind.ObjectMapper; import com.woowahan.recipe.domain.dto.recipeDto.*; impo..

❓ 발생한 문제 이번 팀 프로젝트에서 Infra 담당을 맡게 되어 배포를 하게 되었다. CI/CD를 구축한 후 당연히 배포가 잘 될것이라 생각했으나 EC2 주소를 통해 들어가 보았을 때 서비스가 띄워지지 않았다. Docker Container를 조회한 결과 Exit(1) 상태에서 컨테이너가 실행되지 않고 바로 종료되버리는 것을 확인할 수 있었다. 🔎 왜 발생했을까? 원인을 찾아보고자 컨테이너 로그를 조회해보았다. docker logs [container_id] 확인 결과, UnsaupportedClassVersionError에러가 발생한 것을 확인할 수 있었다. 세부 설명으로는 프로젝트 JarLauncher(Jar 파일을 실행하기 위한 클래스)는 최신 버전(version 61.0)에 의해 컴파일 되었지만..

발생한 오류 포스트 및 댓글 삭제 시 DB에서 완전히 제거되는 것이 아닌 deleteAt에 삭제 시간을 기록하여 삭제된 것처럼 보이는 Soft Delete 방식을 이용하였다. Talend API Tester를 이용한 Test를 하던 중 각 시간 데이터를 담는 변수들에 @JsonFormat 을 이용한 Asia/Seoul timeZone 설정을 해주었음에도 삭제 시 UTC Timezone으로 기록이 되는 것을 확인하였다. 원인으로는 Soft Delete 실행 시 UPDATE post SET deleted_at = CURRENT_TIMESTAMP, updated_at = CURRENT_TIMESTAMP WHERE id = ? 쿼리문이 실행되며 내가 설정한 Timezone으로 들어가지지 않는다는 것을 알게 되었..

프로젝트 발표 시간에 다른 교육생들의 발표를 듣다가 @Nested라는 Annotation을 처음 알게되어 직접 적용해보고 블로그 글을 작성하게 되었다. @Nested Test 란? 테스트 작성자에게 여러 테스트 그룹 간의 관계를 표현할 수 있도록 해주는 Annotation import org.junit.jupiter.api에서 제공하는 기능 외부 테스트의 설정 코드가 내부 테스트가 실행되기 전에 실행되므로 모든 테스트를 독립적으로 실행할 수 있음 ⚠ @BeforeAll 또는 @AfterAll 를 제외한 중첩 클래스 (내부 클래스)만 @Nested 테스트 클래스로 사용 가능 👉 Java16 이전 버전에서는 내부 클래스에서 static을 허용하지 않기 때문 👉 @TestInstance(Lifecycle.PE..