Java & Kotlin/Spring26 Spring Data JPA - Write, Read Only 분리 적용하기 - 2. 무력화 되는 경우 이전 포스팅을 통해 Spring Data JPA를 사용하면서 AbstractRoutingDataSource, LazyConnectionDataSourceProxy를 사용하여 Write, Read Only DB를 분리하여 사용하는 방법의 원리를 알아보았다. 그럼 이 설정을 무력화하려면 어떻게 하면될까? 앞서 봤던 설정의 핵심은 LazyConnectionDataSourceProxy를 사용하여 DataSource로 부터 Connection을 가져오는 타이밍을 늦추는 것이었다. 그럼 이를 무력화 할 수 있는 방법은 Transaction이 시작되자마자 DataSource로부터 Connection을 가져와 이를 직접 사용하게 만드는 것이다. 이러한 방법 중에 당장 테스트해볼 수 있는 방법은 기존 설정에 p6spy를.. 2021. 12. 18. Spring Data JPA - Write, Read Only 분리 적용하기 - 1. 설정 및 원리 프레임워크를 사용하여 비지니스 로직이 아닌 특정한 기술을 구현하려면 프레임워크 내부에 대한 충분한 이해가 필요하다.구글링을 통해 해당 기능의 코드를 알아내더라도 정확하게 내부적인 동작 원리를 아는 것이 좋다는 뜻이다.그렇지 않다면 해당 코드 관련해서 이슈가 생겼을 때 원인을 파악하고 적절한 조치를 취하기가 어렵거나 불가능할 수도 있다. 이번 포스팅에서는 Spring Data JPA를 사용할 때 DB의 부하를 분산시키기 위해 주로 사용하는 기법인@Transactional에 readonly=true 옵션을 줬을 때 Read Only(Secondary) DB를 사용하고, 그렇지 않은 경우(쓰기를 할 때) Write(Primary) DB를 사용하는 방법에 대해 설정과 내부적인 원리를 알아보고,다음에는 이 설정을.. 2021. 12. 17. Testcontainers MongoDB init script 실행하기 통합 테스트를 하다보면 가끔씩 인프라에 대해 init script(초기화 스크립트)를 작성하고 실행해야할 때가 있다. 이번 포스팅에서는 Spring Application에서 통합 테스트 시 테스트 인프라를 설정하기 위해 자주 사용되는 Testcontainers와 DB Module 중 하나인 MongoDB Module을 사용했을 때 초기 데이터를 위해 init script를 어떻게 실행할지에 대해 알아보도록 하겠다. (예제는 여기에서 확인할 수 있다.) 프로젝트 생성 Spring Boot 프로젝트를 아래와 같이 Spring Data MongoDB, Testcontainers 의존성을 추가하고 생성한다. 예제 도메인 클래스 추가 프로젝트 생성 후 MongoDB에 저장할 도메인 클래스를 추가하자 import .. 2021. 10. 29. Start Spring Data MongoDB - 5. Integration Test 테스트 코드의 중요성을 알아도 외부 인프라스트럭쳐와 연동해야하는 경우 테스트 자동화를 하기가 매우 까다로워진다. 다행히 Java 진영에서는 Testcontainers를 사용하면 통합 테스트 시 외부 인프라스트럭쳐를 손쉽게 구성할 수 있을 수 있다. 이번 포스팅에서는 Testcontainers의 MongoDB Module을 사용하여 통합 테스트 환경을 구축하고 통합 테스트 코드를 작성하는 방법에 대해 알아보도록 하겠다. (관련 코드는 여기에서 확인 가능하다) Testcontainers MongoDB Module dependency 추가 Testcontainers MongoDB Module은 MongoDB Transaction 테스트를 도와주기 위한 Module이다. 이를 통해 좀 더 쉽게 MongoDB T.. 2021. 9. 4. Start Spring Data MongoDB - 4. Application 코드 작성 개발을 위한 MongoDB 설정과 Spring Data MongoDB 설정을 마쳤으니 본격적으로 Application 코드를 작성해보도록 하겠다. (컨텐츠에 대한 데이터를 저정하는 애플리케이션을 기반으로 코드를 작성하였다.) (관련 코드는 여기에서 확인 가능하다) BaseDocumentEntity 먼저 Entity id와 생성일자, 수정일자를 갖는 BaseDocumentEntity 기반 클래스를 생성해보자. import org.springframework.data.annotation.CreatedDate import org.springframework.data.annotation.Id import org.springframework.data.annotation.LastModifiedDate import .. 2021. 9. 4. Start Spring Data MongoDB - 3. Spring Data MongoDB 설정 앞서 포스팅을 통해 MongoDB instance를 실행시키고 Transaction을 위한 Replica Set 설정을 마쳤다면, 이제 Spring Boot application과 MongoDB를 연동하기 위해 필요한 설정을 진행하도록 해보자. (관련 코드는 여기에서 확인 가능하다) application.yml 먼저 application.yml 설정을 하자. MongoDB에 접속할 수 있는 MongoDB instance 정보와 접속 설정을 위한 spring.data.mongodb.uri 와 Spring Data MongoDB의 debug log를 확인하기 위한 logging.level 설정을 추가한다. spring: data: mongodb: uri: mongodb://127.0.0.1:27017/pla.. 2021. 8. 30. 이전 1 2 3 4 5 다음