@Transactional(readOnly=true) 에서 쓰기 트랜잭션
들어가며 정말 읽기만 하는 경우 @Transactional(readOnly=true) 로 읽기 전용 트랜잭션을 사용하여 플러쉬를 호출하지 않음으로써 어느 정도의 성능 최적화를 어느정도 이뤄낼 수 있다. 또는 읽기 전용 DB 에 쿼리를 보내기 위해 @Transactional(readOnly=true) 를 사용하여 라우팅 하기도 한다. 읽기 트랜잭션에...
들어가며 정말 읽기만 하는 경우 @Transactional(readOnly=true) 로 읽기 전용 트랜잭션을 사용하여 플러쉬를 호출하지 않음으로써 어느 정도의 성능 최적화를 어느정도 이뤄낼 수 있다. 또는 읽기 전용 DB 에 쿼리를 보내기 위해 @Transactional(readOnly=true) 를 사용하여 라우팅 하기도 한다. 읽기 트랜잭션에...
들어가며 외부 모듈과 통신하는 로직 테스트는 외부 모듈이 제어할 수 없는 영역이므로 모킹 하여 외부 모듈에 대한 응답을 지정한 뒤 진행하기도 한다. 이때 외부 모듈이 실제로 기대한 응답을 내려줄 것이라는 것은 어떻게 테스트해 볼 수 있을까? 예를 들어 레디스에서 특정 키에 대해 특정 값을 응답할 것이라는 것을 모킹을 통해 응답 지정하여 로직을 테스트...
들어가며 자바에서 equals() ,hashcode() 를 재정의하는 이유는 무엇일까? 생성한 객체의 동일성 수준의 같음을 넘어 동등성 수준의 같음을 원하기 때문이다. 여기서 동일성은 실제로 참조가 같은 객체를 가르키고 있는 경우를 말하며 동등성은 도메인 규칙에 의해 같은 객체이다라고 판단하는 기준을 말한다. 그리고 equals() ,hashcod...
들어가며 JPA는 트랜잭션 내 영속성 컨텍스트에서 관리되는 엔티티의 변경이 일어났을 때 update 쿼리를 전달하지 않아도 변경 감지 기능에 의해 update 쿼리를 전달해 준다. 이러한 일이 가능한 이유는 엔티티를 영속성 컨텍스트에 보관할 때 최초 상태를 복사해서 저장해 두는 스냅샷을 관리하기 때문이다. 그리고 데이터베이스에 영속성 컨텍스트가 ...
들어가며 쇼핑몰 프로젝트를 진행하면서 하루에 한 번 상품의 재고 Entity 를 데이터베이스로 부터 영속성 컨텍스트로 가져온 뒤 재고 Entity 를 조건에 따라 Delete 하거나 Update 해야 했다. 이때 상품 Entity 와 재고 Entity 는 OneToMany 관계이다. 상품 하나에 재고 Entity 를 Delete 하거나 Updat...
들어가며 우아한 테크 캠프에서 쇼핑 미션을 진행하며 리뷰어분께 다음과 같은 리뷰를 받았었다. 먼저 EntityGraph 를 소개하자면 엔티티에 대해 어노테이션을 활용하여 연관관계에 있는 엔티트의 Fetch Plan 을 구성할 수 있도록 해준다.기본 type 값으로는 EntityGraphType.FETCH 이며 attributePaths = {“필...
들어가며 테스트를 진행하다 보면 하나의 메서드에 여러 테스트를 수행해야 할 때가 있었다. 예를 들어 “1,2,3” 과 같은 문자열이 입력으로 들어오고 , 혹은 : 으로 구분한 뒤에 값을 모두 더하는 메서드가 있다고 했을 때 가볍게 예상해 볼 수 있는 케이스는 다음과 같다. “1,2” ⇒ 3 “1,2,3” ⇒ 6 “1,2:3”...
들어가며 직접 사용자 서버를 구축해 보며 oauth2 authorization code grant 흐름이 왜 그런가에 대해 생각해 볼 수 있었던 실화를 바탕으로 포스팅을 하고자 한다. 소셜 로그인 기능 도입은 개발자에게 사용자의 인증과 인가 기능을 구현하는 데 있어서 큰 편리함을 가져다준다. 별도의 데이터베이스 구성 없이 소셜 로그인 API 를 ...
들어가며 데이터베이스 인덱스 말만 들어보았지 제대로 적용해 본 적이 없는 것 같아 제대로 배우고 개인적으로 운영 중인 프로젝트에 적용해보기 위해 index 적용전 , 적용 후 비교를 해보며 어떻게 인덱스를 설정하면 좋을지 탐구해보았다. 인덱스란? 먼저 인덱스에 대해서 알아보면 서점에 갔을 때 수많은 책들 중에서 내가 원하는 책을 찾기 위해 ...
들어가며 먼 옛날 Spring REST Docs 설정을 마치고 언젠가 이를 적용하는 글을 작성하려고 했는데 마침 간단한 게시판 API를 구현하게 돼서 겸사겸사 Spring REST Docs 적용기를 작성하고자 한다. 요구사항 문서에 request-parameters 에 대한 정보를 남기고 optional 여부를 나타낸다. 문서에 pa...