[Spring] Entity를 Dto로 변환 하는 방법 알아보기 MapStruct란? MapStruct는 자바 언어로 작성된 객체 매핑 라이브러리입니다. 이를 사용하면 DTO(Data Transfer Object)와 Entity(Entity Class) 객체간의 변환을 쉽게 할수 있습니다. MapStruct의 가장 큰 장점은 컴파일 시점에서 코드를 생성하여 속도가 빠르다. 1. 의존성 추가 plugins { id 'java' } repositories { mavenCentral() } dependencies { implementation 'org.mapstruct:mapstruct:1.4.2.Final' annotationProcessor 'org.mapstruct:mapstruct-processor:1..
@Request Body에서 Setter가 필요없는 이유 알아보기 @RequestBody 어노테이션은 HTTP 요청 메시지의 본문(body) 데이터를 자바 객체로 변환하는 기능을 합니다. 이 때, 자바 객체의 생성자와 Getter/Setter 메서드를 이용하여 객체를 생성하고, 값을 설정합니다. 따라서 @RequestBody 어노테이션을 사용하여 요청 메시지의 본문 데이터를 자바 객체로 변환할 때, 해당 객체에 대한 Setter 메서드가 필요합니다. Setter 메서드를 이용하여 요청 메시지에서 전달된 데이터를 객체에 설정할 수 있습니다. 하지만, @RequestBody 어노테이션을 사용하여 객체를 생성할 때, Setter 메서드를 사용하지 않고 생성자를 이용하여 객체를 생성할 수도 있습니다. 이 경우에..
QueryDsl 메서드 알아보기 JPA Querydsl은 JPA를 이용하여 동적 쿼리를 작성할 수 있게 해주는 라이브러리입니다. Querydsl은 JPA와 연동하여 사용할 때, 다양한 메소드를 제공합니다. 이 중에서 주요한 메소드를 정리하면 다음과 같습니다. 메서드명 메서드 설명 select() 검색 대상 엔티티의 속성을 선택합니다. from() 검색 대상 엔티티를 지정합니다. where() 조건을 지정합니다. orderBy() 정렬을 지정합니다. join() 조인을 수행합니다. on() 조인 조건을 지정합니다. fetch() 즉시 로딩(fetch join)을 수행합니다. leftJoin(), innerJoin(), rightJoin(), fullJoin() 각각의 조인 유형에 따라 조인을 수행합니다. ..
스프링 Jpa 중복 컬럼 상속으로 생성하는 방법 알아보기 예를 들어, User 엔티티와 Admin 엔티티가 있고, 이 두 엔티티는 모두 ID와 NAME 필드를 가진다고 가정해보겠습니다. 이때 중복된 ID와 NAME 컬럼을 상속 받는 BaseEntity를 생성하고, User와 Admin은 BaseEntity를 상속받도록 하면 중복 코드를 줄일 수 있습니다. @Entity @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) public abstract class BaseEntity { @Id @GeneratedValue(strategy = GenerationType.AUTO) protected Long id; protected String name; // G..
스프링 Jpa Paging 처리방법 알아보기 Spring Boot와 JPA를 이용하여 데이터를 조회할 때, 많은 데이터가 있는 경우에는 Paging(페이징) 기능을 사용하여 데이터를 페이지 단위로 나누어서 조회하는 것이 효율적입니다. Paging은 특정 개수만큼의 데이터를 가져와서 화면에 출력하고, 다음 페이지의 데이터를 가져와서 출력하는 방식입니다. 이를 통해 한 번에 모든 데이터를 가져오는 것보다 데이터 전송과 조회 시간을 줄일 수 있습니다. 1. Controller에서 Pageable 객체 생성 Paging 기능을 사용하기 위해서는 Controller에서 Pageable 객체를 생성해야 합니다. Pageable 객체는 요청 파라미터로부터 pageNumber, pageSize, sort 정보를 추출하..
Spring modelmapper Java Entity Dto 매핑하는 방법 1. 의존성 추가 build.gradle 파일에 ModelMapper 의존성을 추가합니다. dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.modelmapper:modelmapper:2.4.2' testImplementation 'org.springframework.boot:spring-boot-starter-test' } 2. Entity와 DTO 클래스 작성 먼저, Entity 클래스와 DTO 클래스를 작성합니다. 여기에서는 Person Entity와 PersonDto DTO를 사용 @Entit..
Spring Boot와 ElasticSearch를 연동하여 간단한 API 호출하는 방법 1. Spring Boot 프로젝트 생성 우선 Spring Boot 프로젝트를 생성합니다. 2. ElasticSearch 의존성 추가 build.gradle 파일에 ElasticSearch 의존성을 추가합니다. dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-data-elasticsearch' testImplementation 'org.springframework.boot:spring-boot-starter-test..
엘라스틱서치 매핑 엘라스틱서치 매핑이란 색인할때 문서의 데이터 유형에 따라 필드에 적절한 데이터 타입을 지정하는 것을 말한다. 색인: 역색인 파일을 만드는것 데이터가 입력되어 자동으로 매핑이 생성되기 전에 먼저 인덱스의 매핑을 정의하면 거기에 맞춰 데이터가 입력된다. 하지만 정확한 검색을 위해서는 수동으로 적절한 타입을 직접 매핑해주는것이 좋다. PUT { "mappings": { "properties": { "":{ "type": "" … ; } … } } } 이미 만들어진 매핑에 필드를 추가하는 것은 가능 (추가할 필드명이 기존필드와 중복되면 안된다.) PUT /_mapping { "properties": { "": { "type": "" … } } } 단, 이미 만들어진 필드를 삭제하거나 필드 타입..
엘라스틱서치 검색 방법 (URI, Request Body) 1. URI 검색 엘라스틱서치 URI 검색은 _search 뒤에 q 파라미터를 사용해서 검색 할 수 있다. 쿼리스트링과 비슷한 것 같다. GET localhost:9200/_search?q=city:seoul 아래와 같이 AND, OR, NOT이 사용가능하며 대문자로 입력해야한다. GET localhost:9092/_search?q=city:seoul AND jeju 2. 데이터 본문 (Data Body) 검색 데이터 본문 검색은 검색 쿼리를 데이터 본문으로 입력하는 방식으로 엘라스틱서치의 QueryDsl을 사용하여 쿼리 또한 Json으로 되어있다. URI검색의 경우 복잡한 질의작성이 불가능한데 Request Body 형식으로 JSON으로 전달하..
엘라스틱서치 기본개념 및 장단점 알아보기 엘라스틱서치(Elasticsearch)는 실시간 검색 및 분석에 특화된 오픈 소스 분산 검색 엔진입니다. Elasticsearch는 데이터를 인덱싱하고 검색, 분석, 시각화하는 데에 사용됩니다. Elasticsearch는 자바 기반의 오픈 소스인 루씬(Lucene) 검색 엔진을 기반으로 하고 있으며, 분산 처리 및 복제, RESTful API 지원 등 다양한 기능을 제공합니다. 다양한 기능 Elasticsearch는 JSON 형식의 문서(Document) 단위로 데이터를 저장하며, 이러한 문서는 인덱스(Index)라는 논리적인 데이터베이스에 저장됩니다. 각 문서는 유일한 ID로 식별됩니다. Elasticsearch는 색인(Indexing)과 검색(Searching..