Spring Framework

이전 글에서 Spring에서 제공하는 Filter에 대해 설명했었는데요, Spring Web을 사용하게 되면, 자연스렙게 FIlter를 거치게 됩니다. [SpringBoot] Spring FIiter안녕하세요, 이번에 알아볼 주제는 Spring의 Filter입니다. Spring에서는 WEB 요청을 위한 다양한 필터가 존재하는데요,이번 시간에는 Spring에서 기본적으로 제공 해 주는 필터 종류와 필터들이 어떻게iron-jin.tistory.com Spring Security를 사용할 때, 우리는 Security에서 제공하는 여러 Filter들이 동작한다는 사실을 알고 있습니다.하지만 이 필터들은 Spring Web에서 기본적으로 등록되는 Servlet Filter들과는 동작 방식도 다르고, 등록 시점도 ..
Hibernate는 ORM 방식으로 JDBC Raw 쿼리를 만들어주는 편리한 라이브러리입니다. ORM이란 무엇인가? Object-Relational Mapping의 약자로, "객체(Object)"와 “관계형 데이터(Relational Database)” 간의 데이터를 자동으로 매핑(Mapping) 해주는 기술입니다. Hibernate에서는 객체를 관계형 데이터로 자동 매핑하는 기술을 통해 객체와 레코드(Row) 를 일대일로 연결해 개발자가 SQL을 직접 작성하지 않고도 DB 데이터를 객체처럼 다룰 수 있는 기술을 제공합니다. Hbernate에서는 다음과 같이 EntityManager라는 클래스를 통해 객체를 데이터베이스에 저장(persist)하거나 데이터를 객체로 변환(load)할 수 있습니다.// 객체..
QueryDSL에서 Sub Query를 사용하기 위해서는 다음과 같이 JpaExpression을 통해 새로운 from절을 구성해야 합니다. 일반적으로, QueryDSL에서 Sub Query는 Select절고 Where절에서만 사용이 가능한 것으로 알고 있는데요, 그 이유는 무엇일까요?QDepartment department = QDepartment.department;QDepartment d = new QDepartment("d");queryFactory.selectFrom(department) .where(department.size.eq( JPAExpressions.select(d.size.max()).from(d))) .fetch(); JPQL 철학 JPQL은 Entity ..
JPA에서 Repository를 사용하기위해서는 JpaRespotiroy를 상속받아야 합니다. JpaRepository는 인터페이스 타입으로, 다음과 같이 Repository로 등록되면 안 되기 때문에 @NoRepositoryBean 어노테이션이 붙어있는 것을 확인할 수 있습니다. @NoRepositoryBeanpublic interface JpaRepository extends ListCrudRepository, ListPagingAndSortingRepository, QueryByExampleExecutor { void flush(); S saveAndFlush(S entity); List saveAllAndFlush(Iterable entities); void deleteA..
ToolCallback이란?이전 글에서 살펴 본 Tool Class가 사용되는 실제 클래스로 다음과 같이 Tool을 ChatClient의 Builder로 선언하게 되면, 내부적으로 ToolCallback 타입의 리스트에 추가되는 것을 알 수 있습니다. chatClient.prompt(prompt) .tools(DateTimeTools()) // 실제 사용 .call() .content(); // DefaultChatClient 내부public ChatClient.ChatClientRequestSpec tools(Object... toolObjects) { Assert.notNull(toolObjects, "toolObje..
Tool Calling이란?Spring AI 공식 문서에 따르면, Toll Calling이라고 하는 것은 AI 모델과의 요청/응답 간에 외부 API 호출 등의 추가적인 기능 지원을 위해 사용합니다. Tool Calling의 주로 다음 두 가지로 사용된다고 합니다. 정보 추출(Information Retrieval)DB, 검색 엔진, 파일 시스템 등과 같은 외부 소스로 부터 정보 추출을 위해 사용됩니다. 보통 주어진 질문에 대해 단순 답변을 하기 보다, 질문의 내용을 보강하기 위해 외부 소스로 부터 데이터 추출 작업을 진행하게 됩니다. 이는, LLM이 실제로 똑똑하기는 하지만 내부 지식은 학습 시점에 된 데이터를 기반으로 대답하기 때문에 "현재 서울 날씨를 알려줄래?", "현재 엔비디아의 주식이 얼마야?"..
Chat Memeory란?보통 AI 모델에 질의할 때, 이전에 보냈던 메시지를 참고하여 답변하는 것을 보고는 하는데요, AI 모델이 이전 메시지를 참고하기 위해서는 메시지를 보관하기 위한 장치가 필요하고, 이를 메시지시 전송 부 앞 프롬프트에 추가해야 합니다. Chat Memory란, 이전 메시지 맥락을 기억하기 위해 제공하는 기능으로 Chat Memory를 통해 AI 모델에 질의할 때 이전 메시지 기반으로 조금 더 관련성 있는 응답을 받을 수 있다는 특징을 가지고 있습니다. 오늘은 Spring AI에서 이전 대화 맥락을 기억하기 위해 제공하는 Chat Memroy에 대해서 알아보려고 합니다. ChatMemoryRepositoryChat Memory를 사용하면서 가장 많이 접하게 될 Interface로..
Spring을 통해 개발하다 보면, Web 요청이나 응답을 중간에 가로채고 가공하여 전달하는 Interceptor가 존재합니다.Spring AI에서도 AI 모델에 요청을 보내기 전/후로 작업을 진행하는 Interceptor와 비슷한 기능을 하는 Advisor가 존재하는데요, 오늘은 Advisor API에 대해 알아보려고 합니다. Advisor APIAdvisor APi는 AI 모델에 전달하기 전/후 중간에 요청 및 응답을 가로채어, payload를 가공하여 요청/응답을 가공하는 역할을 합니다.이는 Spring의 Web에서 제공하는 Interceptor와 비슷한데요, 사실 이 도메인을 Interceptor로 만들면 어땠을까 하는 생각을 가지고 오늘 포스트를 진행하도록 하겠습니다.CallAdvisorSpri..
iron_jin
'Spring Framework' 카테고리의 글 목록