springboot 7

[SpringAI] TokenTextSplitter 파라미터 텍스트 세부 분할 옵션

TokenTextSplitter의 파라미터들이 코드에 고정된 값으로 사용되어, 문서마다 분할 설정을 유연하게 변경하기 어려웠다.문서 크기와 내용에 따라 최적의 조각 크기를 찾기 위해 defaultChunkSize나 minChunkSizeChars와 같은 값들이 상황에 맞게 조정될 필요가 있었다. 코드 수정 없이 설정을 쉽게 관리할 방법이 필요해, 프로퍼티 파일을 통해 파라미터를 외부에서 제어할 수 있는 구조를 검토하게 되었다.TokenTextSplitter 는 문서를 여러 조각으로 분할하여 벡터화하기 쉽게 만드는 도구다. AI 모델이 텍스트를 이해하고 처리하기 적합한 방식으로 문서를 나눌 수 있다. 주로 벡터 저장소에 삽입하기 전, 문서의 특정 길이를 기반으로 분할한다. 1. TokenTextSplitt..

딥러닝 2024.10.27

[Spring] JPA 게시판 CRUD 구현 - Read 전체조회

제주 여행 플랫폼에서 여행 추천 정보로 관광지, 음식점, 관광지, 호텔 정보를 제공하는데카여기서 각 카테고리별로 조회하는 Read 구현 과정을 소개하겠다. 📌 CRUD 기능구현 - Read 전체 조회@GetMapping / @RequestParam Read는 서버에서 데이터를 요청하여 가져오는 방식입니다 GET 메서드를 통해 특정 리소스를 조회하고, 해당 데이터의 자세한 내용을 반환1. Repository(레포지토리) - Jpa 적용JpaRepository는 Spring Data JPA에서 제공하는 인터페이스로, CRUD 작업과 페이징, 정렬 등의 기능을단순하게 사용할 수 있도록 한다.데이터베이스와 상호 작용하는 부분.특정 태그나 지역에 해당하는 관광지 목록을 데이터베이스에서 검색.JpaReposito..

[Spring] JPA 연관관계 @ManyToOne, @OneToMany 적용하기

JPA(Java Persistence API)에서는 객체 간의 관계를 데이터베이스의 테이블 관계와 매핑해주는 여러 어노테이션을 제공한다. @ManyToOne과 @OneToMany는 관계형 데이터베이스의 외래 키(foreign key) 관계를 객체 지향적으로 표현한다. @ManyToOne @ManyToOne 어노테이션은 다대일(N:1) 관계를 나타낸다. 여기서 '다(N)'는 소유하고 있는 객체, '일(1)'은 참조되는 객체가 되는 것 예를 들어, 여러 개의 자식은 하나의 부모에 속해있다. ManyToOne자식 테이블에 외래 키 컬럼을 생성하여 부모 테이블의 기본 키(primary key)를 참조한다.@Entitypublic class Child { @Id @GeneratedValue(strate..

[Spring] WebClient VS RestTemplate 이해하기

Spring Boot 애플리케이션에서 REST API를 호출하는 방법은 여러 가지가 있다.두 가지 주요 방법은 RestTemplate과 WebClient 다.RestTemplate: Spring Framework 3.0부터 사용되어 온 전통적인 방법이다. 동기적인 방식으로 작동하여 현재 스레드가 외부 서비스로부터 응답을 받을 때까지 기다린다. RestTemplate은 간단하고 직관적인 API를 제공하며, 작은 어플리케이션 또는 간단한 API 호출에 적합하다. 하지만, Spring WebFlux의 등장으로 이제는 유지 관리 모드로 들어가며 새 프로젝트에서는 WebClient 사용이 권장된다.WebClient: Spring 5에서 도입된 WebClient는 비동기적이고 논블로킹 방식을 지원하여 요청을 처리하..

[Spring] 백엔드 개발 Modelmapper, builder

Modelmapper * save() 메소드를 통해 하나의 엔티티를 저장 * 전달 되어 오는 데이터는 MenuDTO 타입이므로 Menu Entity로 변환해서 처리 * DB 삽입, 수정, 삭제 로직은 @Transcational 어노테이션 //service public void registNewMenu(MenuDTO newMenu){ menuRepository.save(modelMapper.map(newMenu, Menu.class)); //modelMapper 역할, 엔티티 필드, DTO 변수 매칭 } * 파라미터로 전달 받고 MenuService에 구현한 메소드를 호출 * 별도의 Exception 발생이 없었다면 * 클라이언트가 메뉴 목록을 조회하는 기능을 다시 요청할 수 있도록 redirect 처리 ..

카테고리 없음 2024.04.09

[Spring] 백엔드 개발 @RequestBody @PathVariable @RequestParams

@RequestBody//service@Transactionalpublic CreatePostResponse createPost(CreatePostRequest request) { /** builder 등록 * request 사용자 한테 받는 DTO * CreatePostResponse Controller 보내는 DTO * requestDTO를 POST 엔티티 객체로 바꿔줌 * builder 직접 값 입력*/ Post post = Post.builder() .title(request.getTitle()) //getTitle DTO 값 .content(request.getContent()) .build(); ..

JPA N+1문제 @BatchSize로 해결하기

N+1? N+1은 쿼리문이 1회 실행되어야 하는데, N개 의 쿼리를 추가로 조회해서 총 N+1만큼 추가적인 쿼리가 발생한다. 'N+1'로 실행되는 쿼리는 데이터베이스를 엄청나게 많이 사용(메모리 사용 多)하기 때문에 문제가 된다. N+1 문제를 해결해보자. 1. 테스트 데이터 추가 public class BoardRepositoryTests { @Test public void testInsertAll(){ for (int i = 1; i