impati

설정에 따라 실제 외부 모듈과 통신하는 로직 테스트 해보기

들어가며 외부 모듈과 통신하는 로직 테스트는 외부 모듈이 제어할 수 없는 영역이므로 모킹 하여 외부 모듈에 대한 응답을 지정한 뒤 진행하기도 한다. 이때 외부 모듈이 실제로 기대한 응답을 내려줄 것이라는 것은 어떻게 테스트해 볼 수 있을까? 예를 들어 레디스에서 특정 키에 대해 특정 값을 응답할 것이라는 것을 모킹을 통해 응답 지정하여 로직을 테스트...

JPA Entity 에서 equals() ,hashcode() 다시보기

들어가며 자바에서 equals() ,hashcode() 를 재정의하는 이유는 무엇일까? 생성한 객체의 동일성 수준의 같음을 넘어 동등성 수준의 같음을 원하기 때문이다. 여기서 동일성은 실제로 참조가 같은 객체를 가르키고 있는 경우를 말하며 동등성은 도메인 규칙에 의해 같은 객체이다라고 판단하는 기준을 말한다. 그리고 equals() ,hashcod...

JPA에서 변경 감지 사용 안 하기

들어가며 JPA는 트랜잭션 내 영속성 컨텍스트에서 관리되는 엔티티의 변경이 일어났을 때 update 쿼리를 전달하지 않아도 변경 감지 기능에 의해 update 쿼리를 전달해 준다. 이러한 일이 가능한 이유는 엔티티를 영속성 컨텍스트에 보관할 때 최초 상태를 복사해서 저장해 두는 스냅샷을 관리하기 때문이다. 그리고 데이터베이스에 영속성 컨텍스트가 ...

OAuth2 Authorization Code Grant 흐름은 왜 그렇게 동작하는가

들어가며 직접 사용자 서버를 구축해 보며 oauth2 authorization code grant 흐름이 왜 그런가에 대해 생각해 볼 수 있었던 실화를 바탕으로 포스팅을 하고자 한다. 소셜 로그인 기능 도입은 개발자에게 사용자의 인증과 인가 기능을 구현하는 데 있어서 큰 편리함을 가져다준다. 별도의 데이터베이스 구성 없이 소셜 로그인 API 를 ...

성능을 비교해가며 인덱스 적용하기

들어가며 데이터베이스 인덱스 말만 들어보았지 제대로 적용해 본 적이 없는 것 같아 제대로 배우고 개인적으로 운영 중인 프로젝트에 적용해보기 위해 index 적용전 , 적용 후 비교를 해보며 어떻게 인덱스를 설정하면 좋을지 탐구해보았다. 인덱스란? 먼저 인덱스에 대해서 알아보면 서점에 갔을 때 수많은 책들 중에서 내가 원하는 책을 찾기 위해 ...