본문 바로가기

프로젝트 - Twogether9

23.08.24 오늘은 h2라는 것을 사용해 테스트코드를 만들어볼 예정이다. h2란 java로 만들어진 관계형 데이터베이스 관리 시스템이다. 장점 컴퓨터에 저장된 RAM 기반 RDBMS여서 용량이 적고, 브라우저 기반 콘솔을 지원한다. spring boot에서는 별도의 db를 사용하지 않고 사용할 수 있다. 기본 설정 // application.yml spring: datasource: url: jdbc:h2:mem:testdb driverClassName: org.h2.Driver username: sa password: h2: console: enabled: true # path: /h2-console # default 값이므로 이 경로로 들어가려면 필요없음 profiles: active: local jpa: dat.. 2023. 8. 24.
23.08.23 오늘의 할 일 - 에러가 발생하면 터미널에서도 확인 할 수 있도록 log.error 남기기 - 에러가 발생했을 때 상태코드를 미리 정한 errorcode와 같이 넘기기 에러가 발생하면 터미널에서도 확인 할 수 있도록 log.error 남기기 위 기능 구현에 대하여 CustomException마다 일일이 log.error를 남기는 굉장히 귀찮은 작업이 될 줄 알았으나 생성자에 직접 log.error를 추가해 작업을 매우 빨리 마칠 수 있었다. 기존 코드 if (!foundBoard.getUser().getId().equals(user.getId()) || !user.getRole().equals(UserRoleEnum.ADMIN)) { log.error("보드를 생성한 사람만 협업자 추방할 수 있습니다.".. 2023. 8. 23.
23.08.21 오늘은 카드의 CRUD 기능 구현과 보관/복구를 목표로 하고, 남은 시간 이동을 구현해볼 생각이다. CRUD 기능은 덱과 큰 차이점은 없었으나 다른점이 있다면 필드의 개수가 덱보다 훨씬 많아 requestDto나 responseDto, entity에 Builder 기능을 더 적극 채용했다는 점 뿐이다. 또한 patch 기능을 적극 활용하기 위해 하나의 메서드에서 제목과 설명 중 하나만 수정할 수 있도록 하기 위해 아래와 같이 로직을 짰다. @Transactional public void editCard(Long id, CardEditRequestDto requestDto) { Card card = findCardById(id); if (requestDto.getTitle() != null) card.ed.. 2023. 8. 21.
23.08.17 이번 프로젝트에서는 3개 이상의 필드를 가지고 있는 dto는 builder 패턴을 사용해보기로 했다. 그 이유는 2개 이하일 때는 builder의 장점을 살리기도 힘들고, 오히려 builder를 적용하는데 드는 비용이 더 크다고 생각했기 때문이다. 또한 entity에서도 필드가 너무 많으면 @Setter 보단 dto를 사용하기로 한다. @Setter는 후에 추적하기 힘들기 때문. 덱을 삭제할 때 archived된 덱만 삭제가 가능하도록 만들기로 했기 때문에 서비스에서 해당 기능을 구현할 때 deck.getIsDeleted를 사용하려 했으나 get으로 가져오지 못하는 상황이 발생했다. 다른 필드들은 정상적으로 get으로 가져올 수 있었기에 무엇이 문제인가 했더니, @Getter는 boolean 타입의 필드.. 2023. 8. 17.