개요프로젝트가 한창이다. 프로젝트하며, 테스트 환경에서 JPA와 관련하여 발생한 이슈에 대해 글로 작성하면 좋을 것 같아 정리하였다. 이슈 1. 더티 체킹 (Dirty Checking)바로 코드로 간다.다음은 예제 코드로 시나리오는 다음과 같다.user 정보를 더티 체킹을 통해 업데이트 한다업데이트가 잘 되었는지 검증한다.@SpringBootTest@AutoConfigureMockMvcpublic class ExampleTest extends TestContainerSupport { @Autowired private UserRepository userRepository; @Autowired private TokenProvider tokenProvider; @Autowired ..
개요최종 프로젝트를 시작하면서, 인증/인가 부분을 한 번 더 맡게 되었다. 이전에는 RefreshToken을 RDB에 관리하며, 'RefreshToken을 Redis에서 관리하는 것이 더 낫지 않을까?'란 느낌이 있었는데, 정확히 어떤 점이 좋은지는 머리 속으로 그려봐도 크게 그려지지는 않았다. 인증/인가 부분을 한 번 더 맡게 된 김에 이번에는 Redis를 이용하여 RefreshToken을 관리해보고, 이전에 잘못 이해했던 RefreshToken 사용 방식을 다시 공부하며 더불어 RDB로 관리할 때의 차이점을 비교해보려 한다. 요구사항함께 살펴볼 부분은 다음과 같다.로그인 시 토큰들을 발급받으며 RefreshToken을 Redis에 저장한다.AccessToken 만료 시 RefreshToken을 통..
개요최근에 캐치 테이블을 타겟 클론하여 프로젝트를 진행하였다.예약 하기 전 해당 시간에 대한 선점을 먼저 요구하는 예약기능의 요구사항이 기억에 남는다. 최근에 이 기능에 대한 로직을 쭉 살펴보다가 개선점이 보였다.기존 로직을 리팩토링 후 글로 남겨본다. 요구사항예약 시, 요구사항은 다음과 같다.가게의 예약시간을 클릭 시, 그 시간에 대해 해당 유저는 7분 동안 예약 선점권을 갖는다.예약 선점권을 가진 유저가 상세정보를 입력 후 예약을 할 수 있다. 기존 코드@Service@RequiredArgsConstructorpublic class MemberReservationService { private final ReservationTimeRepository reservationTimeReposito..