본문 바로가기
728x90
반응형

분류 전체보기279

[Junit] Elasticsearch Unit(Integration) Test Code 작성하기 Spring에서 Junit을 사용하여 Elasticsearch 테스트 코드를 작성하는 방법  Spring 프로젝트에서 Junit으로 Test Code를 작성할 때 RDB(Mysql, Postgresql, Orcle 등)는 JPA나 MyBatis의 Queyr(method)를 사용하여 결과값을 간단히 검증할 수 있지만 Elasticsearch의 경우 org.elasticsearch에서 제공하는 Library를 활용하여 TEST CODE를 효율적으로 작성할 수 있다. 기존에는 ES 임베디드 환경을 사용하여 테스트가 가능했지만 7.0 버전부터 사용이 불가능해진 것으로 보이며 ES의 개발자가 대안으로 RestHighLevelClient를 사용한 In Memory 테스트 방법을 추천한다.https://discuss.. 2024. 1. 23.
[Jenkins] Jenkins란? Jenkins는 오픈 소스 자동화 서버로 CI/CD를 지원하는 도구이다. 소프트웨어 개발 및 배포 프로세스를 자동화하여 개발자들이 소스 코드 변경 사항을 통합하고 테스트하며, 안정적으로 프로덕션 환경에 배포할 수 있다. Jenkins 주요 특징 / 개념 지속적 통합(CI): Jenkins는 여러 개발자들이 작업한 코드 변경 사항을 자동으로 통합하고 빌드하는데 사용된다. *코드 변경이 더 빈번하게 통합되고 테스트되기 때문에 품질 향상과 버그 감소의 효과가 있다. 자동화된 빌드 및 배포: 소스 코드의 빌드 및 테스트를 자동화하여 자동으로 배포 프로세스를 시작할 수 있다. 플러그인 지원: 다양한 플러그인을 지원하여 다양한 개발 / 배포 환경에 대한 통합을 제공한다. 플러그인을 통해 Email 알림, VCS 통.. 2024. 1. 14.
[SpringDataElasticsearch] Spring Data Repository의 기본과 Elasticsearch 세부 사항 Data Repositories Spring Data Repository의 기본과 Elasticsearch 세부 사항 설명. 1. 핵심 개념 (feat. Entity 상태 감지 전략) 2. Repository Interface 정의 Fine-tuning 저장소 정의 Spring Data Module 사용 3. Elasticsearch Repositories 4. Reactive Elasticsearch Repository (반응형) 사용 구성 5. Repository Instances 생성 (Instance & Bean) Java 구성 XML 구성 Filter 사용 6. Query Method 정의 7. Query Methods 쿼리 조회 쿼리 생성 Method 반환 타입 @Query 어노테이션 8. P.. 2023. 12. 16.
[SpringDataElasticsearch] Entity Callbacks. 특정 메서드가 호출되기 전후에 Entity 수정 사항을 적용하는 방법 Entity Callbacks 특정 메서드가 호출되기 전후에 Entity 수정 사항을 적용하는 방법. SpringData 인프라는 특정 메서드가 호출되기 전/후에 엔티티를 수정할 수 있는 훅을 제공하며, 이러한 EnttiyCallback 인스턴스는 Entity를 콜백 형식으로 확인하고 수정하는 편리한 방법을 제공한다. EntityCallback은 동기 및 반응형 API와의 통합 지점을 제공하며 ProcessChain 내에서 실행 순서를 보장하고, 수정된 Entity나 반응형 래퍼 유형을 반환할 수 있다. 엔티티 콜백 구현 (Implementing Entity Callbacks) EntityCallback은 일반적으로 제네릭 타입 인수를 사용하기 때문에 해당 도메인 타입과 직접적인 연관관계를 가진다. In.. 2023. 12. 16.
[SpringDataElasticsearch] Java 객체 JSON 데이터 매핑 방법. Object Mapping Java 객체(DomainEntity)를 Elasticsearch에 저장된 JSON 타입의 데이터에 매핑하고, 또 그 반대로 매핑하는 방법. Meta Model Object Mapping (메타 모델 객체 매핑) 메타모델(Metamodel) 기반 접근 방식은 Elasticsearch와의 데이터 읽기/쓰기를 위해 도메인 유형 정보를 사용한다. 이는 특정 도메인 유형 매핑을 위해 Converter 인스턴스를 등록하는 것을 허용한다. 1. Mapping Annotation Overview (매핑 주석 개요) MappingElasticsearchConverter는 메타데이터를 사용하여 객체를 문서로 매핑한다. 이 메타데이터는 Entity의 속성에서 가져오며, 이를 위해 다양한 주석을 .. 2023. 12. 16.
[SpringDataElasticsearch] Index 생성/삭제, Entity 저장/검색, Query 사용 등 조작 방법. Spring Data Elasticsearch는 여러 인터페이스를 사용하여 Elasticsearch 인덱스에 대해 호출할 수 있는 작업을 정의한다. 인터페이스는 Elasticsearch API 구조로 되어 있으며 인덱스 관리, 도메인 유형에 대한 읽기/쓰기 매핑 지원, 풍부한 쿼리 및 기준 API, 자원 관리 및 예외 번역 등의 기능 사용할 수 있게 해준다. 1. IndexOperations (인덱스 작업) IndexOperations는 인덱스 수준에서 동작하는 작업을 정의하는 인터페이스이다. 주로 인덱스를 생성하거나 삭제하는 등의 관리 작업을 수행한다. IndexOperations indexOps = elasticsearchRestTemplate.indexOps(MyEntity.class); index.. 2023. 12. 16.
[SpringDataElasticsearch] Client 구현을 통한 사용 방법 Elasticsearch 클라이언트를 직접 사용하여 클러스터 작업을 수행할 수 있지만 SpringDataElasticsearch 클라이언트를 사용하면 DataAccess, ObjectMapping, Annotation, QueryDSL, Transaction 등을 이용하여 보다 쉽고 편리하게 Elasticsearch를 사용할 수 있게 도와준다. Imperative Rest Client (명령형 REST 클라이언트) 전통적인 동기식 프로그래밍 방식을 따르며, 요청을 보내고 응답을 기다리는 동안 블로킹되는 방식을 동작한다. Ex> RestTemplate, WebClient 등,, 명령형 (비반응형) 클라이언트를 사용하기 위한 Bean 구성 @Configuration public class MyClientCo.. 2023. 12. 16.
[Junit] Test 종류. Test Case (feat. 전자정부 프레임워크) 테스트는 소프트웨어 개발 생명주기에서 매우 중요한 부분을 차지한다. 테스트를 잘 하면 버그 감소와 유지보수 용이성, 코드 문서화, 개발 생산성 향상 등의 측면에서 유리하다. White Box Test (구조 기반 테스트) 소프트웨어의 내부 구조와 동작을 검증하는 테스트로 개발자가 코드의 내부 로직, 제어 흐름, 데이터 흐름 등을 이해하고 테스트 케이스를 작성하는 방법이다. 코드의 모든 경로와 조건을 확인할 수 있어 Code Coverage가 높지만, 개발자의 시각에 의존하므로 완전한 테스트는 힘들다. Black Box Test (기능 기반 테스트) 소프트웨어의 내부 구현을 알지 못하고 기능에만 초점을 맞춘 테스트로 시스템이 요구 사항을 만족하는지 여부를 확인하는 것이 목표이다. 사용자의 관점에서 테스트하.. 2023. 11. 17.
[Junit] TypeReference, JsonPath - Json 다루기 (feat. ObjectMapper) Junit을 사용하여 Integration Test Case 작성 중 데이터 검증로직을 구현할 때 유용하게 사용할 수 있다. TypeReference란? TypeReference는 Jackson 라이브러리에서 제공하는 클래스로, 제네릭 타입을 사용하는 경우에 JSON 데이터를 해당 제네릭 타입으로 역직렬화할 때 유용하다. Jackson은 제네릭 타입 정보를 유지할 수 없기 때문에 이러한 경우에 TypeReference를 사용하여 타입 정보를 보존한다. Example > List list = new ObjectMapper().readValue(responseContent, new TypeReference(){}); @Test //Todo. User 리스트 조회 테스트 @Transactional public.. 2023. 11. 17.
728x90
반응형