전체 글

    [Spring] 테스트 코드에서 JPA metamodel must not be empty! 예외가 발생할 때

    문제상황 게시글 생성 Controller 테스트를 작성하고 테스트를 하려는데 해당 에러를 만나게 됐다. 처음엔 Entity 설정을 뭔가 잘못했나 생각했는데 딱히 이상은 없었고, 잘 모르겠어서 검색을 해보았다. 문제점 에러가 발생한 이유는 Auditing 때문이다. 게시글의 작성일 필드 값을 자동으로 넣어주기 위해 Auditing 설정을 했는데, @EnableJpaAuditing 을 App Class에서 설정을 해주었다. 이렇게 한 설정은 실행할 때는 문제가 되진 않지만, 내가 작성한 테스트에서는 문제가 된다. Spring 컨테이너를 요구하는 테스트는 가장 기본이 되는 @SpringBootApplication이 붙은 클래스가 항상 로딩이된다. @EnableJpaAuditing이 해당 클래스에 등록되어 있어..

    2023.11.03 TIL

    오늘 한 것 Spring 강의 듣기 Spring 개인 과제 강의듣기 Spring 주차가 되면서 Spring 강의를 듣게 되었다. 이미 이해하고 있던 것들도 있지만 어렴풋이 이해했던 것들을 다시 정리할 수 있는 시간이 된 것같다. 개인과제 간단한 익명 게시판을 만드는 과제를 받았다. 어느정도 Spring에 대한 지식은 있지만 테스트 코드 작성에 익숙치 않으므로 이번에는 테스트 주도 개발 방식(TDD)으로 구현을 해보려고한다. 이번에도 과제 구현 과정을 포스팅할 예정이다!

    팀 프로젝트 KPT 회고

    자바 주차가 끝나면서 팀과 마지막 프로젝트 과제를 하게되었다. 프로젝트 팀명 : 스프링 A02 팀원 : 김민중, 박지환, 김진훈 개발 기간 : 2023.10.24 ~ 2023.10.30 개발 내용 : 호텔 예약 프로그램 만들기 📜 KPT 회고 1. KEEP (잘 한 것) 협업 기능별로 개발 역할 분담 branch를 활용해서 각각의 기능 개발 브랜치를 만들고 main 브랜치에 병합함 깃허브 이슈를 통해 각 기능에 대한 티켓을 발행하고 담당과 PR을 통해 코드 리뷰를 하며 완성도를 높임 저번 팀 프로젝트에서 하고 싶었던 것들을 잘 적용함 기술 Stream API를 적절히 사용하여 컬렉션 객체를 순회하는 코드를 가독성 좋게 작성함 클래스의 역할과 책임을 적절히 분리하여 객체 지향적으로 설계 및 구현을 시도함 ..

    [Spring] spring-data-jpa Auditing 사용하기

    Auditing 테이블을 설계할 때, 공통적으로 들어가는 컬럼이있는데, 바로 생성일자,수정일자,생성자,수정자 이다. 거의 모든 테이블에 들어가있고 정렬, 필터, 또는 검증? 도 할 수 있는 꽤나 중요한 정보들이다. 하지만 서비스를 요청을 하거나 응답을 줄 때, 필요한 정보가 아니기도하다. 서비스에는 영향이없지만 필요하고 중요한? 데이터를 spring-data-jpa 모듈에서 자동으로 넣을 수 있도록 제공을해준다. 해당 기능이 바로 Auditing이다. 사용하기 1. Main App 클래스에 @EnableJpaAuditing 추가하기 @EnableJpaAuditing @SpringBootApplication public class Application { 2. 엔티티 클래스 위에 @EntityListene..

    2023.10.27 TIL

    오늘 한 것 팀 프로젝트 개인 프로젝트 (커뮤니티) 팀 프로젝트 구현을 모두 끝내고 README에 내용도 채울겸 처음 설계하며 그렸던 플로우차트와 클래스다이어그램을 좀 더 다듬고 정리하는 시간을 가졌다. 팀원 모두 각자 맡은 역할을 잘해주어서 무난하게 잘 끝낸 것 같다. 다음 과제부터는 팀이 바뀌는데 새로운 팀에 잘 적응해서 더 나은 결과물을 내보고 싶다. 개인 프로젝트 팀 프로젝트를 끝내고 하고있던 개인 프로젝트를 공부를하며 진행하였다. 오늘은 각 테이블들에 존재하는 공통 컬럼들을 spring-data-jpa 모듈에서 제공하는 기능인 auditing을 설정하였다. 기본적으로 spring docs 를 참고하였고, https://docs.spring.io/spring-data/jpa/docs/1.7.0.D..

    2023.10.26 TIL

    오늘 한 것 팀 프로젝트 (콘솔 호텔 예약 프로그램) 알고리즘 1문제 팀 프로젝트 팀원들과 각자 맡은 기능에 대해 구현하면서.. 이슈로 개발 티켓을 발행하고 PR을 올려 코드리뷰를 하며 병합하는 과정을 경험하였다. 느낀점 해당 과정을 경험하면서 pr을 올리고 코드리뷰를 하면서 추가 수정사항이 생길 때 어떻게 해야하는지도 찾아보며 진행하였고 서로의 코드를 병합하면서 다른 코드 스타일로 인해 코드가 충돌이나면서 병합하는 과정도 경험해보았다. 해당 과정으로 협업을 하면서 고민이 된 게 있었는데, 각자 분담된 기능을 모두 구현하고 이를 제어하는 공통적인 로직에 대해 어떻게 분담시키고 구현해야할 지 고민이 많이되었다. 그래서 우선 한사람의 화면을 공유해서 같이 코드를 보며 구현하는 쪽으로 진행 하였고 요구사항에 ..

    2023-10-24 TIL

    오늘 한 것 팀 프로젝트 (콘솔 호텔 예약 프로그램) 개인 프로젝트 팀 프로젝트 오늘부터 팀프로젝트로 콘솔 호텔 예약 프로그램을 구현하기로 했다. 일정과 역할 분담을 위해 우선 요구사항을 보며 게더타운에 칠판?에 팀원들과 같이 러프하게 구조를 잡아봤다. 역할 분담은 서비스별로 나눴고 내가 맡은 역할은 예약 취소 기능 구현이다. 내일 TIL에 구현 과정을 작성할 예정이다~ 개인 프로젝트 WebClient request와 response 데이터 로깅 방법 외부 API 요청을 할 일이 생겨 restTemplate 대신 webClient를 써보았다. API 응답을 잘 못받아와서 요청, 응답에 대한 데이터 확인을 위해 찾아보니 filter 체이닝을 하면서 로깅하는 방법들이 있던데, 좀 더 찾아보니 간단하게 구현하..

    2023.10.20 TIL

    오늘 한 것 콘솔 키오스그 주문 프로그램 구현 어제에 이어서 키오스크 프로그램을 계속 구현하고있다 오늘은 필수 요구사항에 필요한 기능을 모두 구현해서 선택 요구사항 기능을 구현을 했다. 기존 구매 상품을 선택할 때, 옵션 을 추가하는 기능인데 기능을 구현하면서 문제가 조금 발생했다. 요구사항은 이렇다. 1. 상품 선택시 옵션을 추가 선택 2. 주문 시 상품 리스트를 볼 때 옵션별로 나누기. 문제사항 1. 구매 로직 기존에 구매까지의 프로세스는 이렇다 키오스크 실행 -> 각 메뉴(커피,음료,케이크) 객체 별로 상품 리스트 생성 -> 상품리스트 중 상품 선택 -> 해당 상품 주문객체에 추가(장바구니) -> 주문처리 여기서 문제는 상품을 선택하고 옵션을 추가해줄 때 발생했다. 기존에 상품은 키오스크 초기화 시..