개발

회원탈퇴 로직을 작성하면서회원을 삭제하려면 UserService에서 많은 Entity들을 삭제해야 하는 문제가 있었다.도메인을 분리하지 않았던 문제가 가장 크다.댓글과 좋아요는 여행일정 게시물 테이블과 사용자를 참조하고 있다.여행일정 게시물과 토큰은 사용자를 참조하고 있었다. FK 제약조건의 문제점데이터 무결성을 위해서 사용하면 좋지만 회원탈퇴를 하면서 문제가 있었다. 사용자를 제거하기 위해서는 아래와 같은 순서를 지켜줘야 한다. 1. 여행 일정 게시물을 삭제하기 전에 댓글과 좋아요를 제거해야 한다.목적은 여행일정이 아니라 사용자를 제거하기 위함이다.사용자가 작성한 게시물과 게시물과 연관된 다른 사용자의 좋아요 댓글 + 사용자가 작성한 댓글 좋아요도 전부 삭제해야 한다.  2. 사용자를 삭제하기 전에 여..
풀 (Pool)이란? 컴퓨터 과학에서 풀은 사용할 때 획득한 메모리와 나중에 해제되는 메모리가 아닌, 사용할 준비가 된 메모리에 유지되는 리소스 모음이다. 이미 사용할 준비가 된 자원을 메모리 위에 일정량 미리 생성해둔 자원의 집합 클라이언트가 리소스 사용을 완료하면 해제 및 손실되지 않고 풀로 반환된다. 들어가기 전에 Connection Pool과 Thread Pool은 다르다는 점을 알고 가셨으면 좋겠습니다. 더보기 애플리케이션에 대한 모든 요청이 DB에 접근하는 것은 아니기 때문에 WAS의 Thread는 Connection Pool의 갯수보다 여유있게 설정하는것이 좋다. Connection Pool은 DB와 커넥션을 맺기 위한 드라이버를 로드하고 커넥션 객체를 생성하는 등의 과정에서 발생하는 비용..
사용자가 로그인하고 자동으로 바로 토큰을 재발급 할 일은 없겠지만 테스트 코드를 작성하면서 문제가 있었다. 아래 메서드를 통해서 refresh 토큰이 존재할 경우는 update query를 날려주고 존재하지 않으면 새로 insert query를 날려주기 위해서 변경 감지를 사용하지 않았다. Refresh Token으로 Access Token을 발급시 Refresh Token도 재발급 했다. 순조롭게 테스트를 작성했는데 문제가 발생했다. when절 (authService에 reissueToken 메서드) 쿼리 설명 select-query 2개는 업데이트를 하기 전에 token을 통해서 유저를 조회하는 로직이 있기 때문에 발생했다. one-to-one 관계로 refresh token ➡️ user로 단방향으..
· 개발
getter를 지양하라는 의미는 객체의 책임을 더욱 명확하게 하기 위해서 지양하는 것이지 자료구조나 Test에서는 사용하는게 맞다고 생각합니다.getter를 사용했을 때 편리함을 몸으로 느껴보고 작성하게 되었습니다. 메서드를 호출했을 때 Field에 있는 Name과 MoveCounter의 결과가 어떻게 되었는지 Test해봅시다. 1. 리플렉션 활용하기 Class에 있는 Field를 꺼내오는 방식입니다.접근제어자가 public이면 상관없지만 setAccessible 메서드에 true를 주어야 private 필드에 접근이 가능합니다. 예외 메시지도 잘 가르쳐줘서 금방 해결할 수 있다고 생각합니다. java.lang.IllegalAccessException: class racingcar.domain.car.C..
· 개발
LottoRank라는 Enum을 정의해서 사용하고 있습니다. View쪽에서 메시지를 순서대로 활용하기 위해서 Enum을 정렬하는 방법들을 소개하고자 합니다. 위 메서드를 활용해서 우테코에서 작성한 실행 결과 예시를 출력하려고 합니다. 모든 로또를 관리하는 Class에서 로또 순위를 Key로, 해당 순위가 몇번 나왔는 Count값을 가지는 Value로 저장된 Map을 반환하는 메서드가 있습니다. View쪽에서 이 Map을 통해서 실행 결과 예시에 맞게 출력해줘야 되는데 keySet()으로 뽑을 때 어떻게 데이터 순서를 보장해줘야 할까요? Comparable을 활용할 수 있지 않을까? Enum 클래스의 values()를 뽑고 정렬하면 되지 않을까? Enum의 Comparable enum은 이미 상수의 선언..
uhanuu
'개발' 카테고리의 글 목록 (2 Page)