본문 바로가기

전체 글91

[Mybatis] Mybatis 에서 useGeneratedKeys 와 selectkey MYSQL 에서 insert 시에 pk값을 auto_increment 설정해놓은 ID 를 등록과 동시에 반환을 하기위해, 쿼리를 짰다. SELECT IF(MAX(VER_NO)+1 >= 0, MAX(VER_NO)+1, 0 ) as newVer FROM table_name UAG_CD=#{uagCd} INSERT INTO table_name ( UAG_CD , TITLE , CONTENT , VER_NO , DISP_YN , DEL_YN , REG_USER_ID , INS_DT ) VALUES ( #{uagCd} ,#{title} ,#{content} ,#{newVer} ,#{dispYn} ,#{delYn} ,#{regUserId} ,CURRENT_TIMESTAMP() ) Integer rowCount = .. 2023. 11. 13.
[WebClient] WebClient 로 카카오모먼트 API 연동하기 Spring 어플리케이션에서 HTTP 요청을 할 땐 주로 RestTemplate 을 사용했었다. 하지만 Spring 5.0 버전부터는 RestTemplate 은 유지 모드로 변경되고 향후 deprecated 될 예정이므로 WebClient 쓰기를 적극 권장하고있다. (참고 https://docs.spring.io/spring-framework/reference/web/webflux-webclient.html) WebClient 는 논블로킹/블로킹 모두 지원한다.(참고로 RestTemplate는 블로킹방식이다.) 특징 싱글 스레드(코어당 1개의 스레드)와 Non-Blocking 방식 사용 높은 처리량과 확장성이 좋다. 이벤트에 반응형으로 동작(Spring React 프레임워크 사용) Reactor 기반의 .. 2023. 11. 8.
[WEB][Reactor Java] Mono와 Flux를 생성하는 방법 Reactor는 Reative Streams 명세를 기반으로 JVM에서 반응성 Non-Blocking 애플리케이션을 생성하기 위한 JAVA 라이브러리입니다. 처음에는 이 라이브러리로 작업하는것이 어려울 수 있습니다. 이 시리즈는 Mono 및 Flux 클래스를 통해 Reactor를 제공하는 Reactive Streams의 실행을 생성, 조작, 관리하는 과정을 설명합니다. Mono와 Flux는 모두 반응성 스트림이지만 표현하는 것이 다릅니다. Mono: 0개 또는 1개의 요소의 Stream Flux: 0개 ~ N개의 요소의 Stream 예를들어 HTTP 서버에 요청을 하면 응답이 없거나 한 개의 응답을 받으므로 이 경우 Flux보다는 Mono가 더 적절합니다. 반대로 어떤 구간에서 수학적인 함수의 결과를 계.. 2023. 11. 8.
[WEB] Reactive Streams Reactive Streams? 리액티브 스트림은 자바와 다른 언어에서 사용되는 프로그래밍 패러다임으로, 데이터 스트림을 논블로킹(non-blocking) 및 비동기(asynchronous) 방식으로 처리하는 데 중점을 둔다 이 접근 방식은 대량의 데이터 또는 높은 동시성 수준을 처리할 때 리소스를 보다 효율적으로 사용하고 성능을 향상시킬 수 있다 리액티브 프로그래밍은 실시간 데이터(예: 실시간 피드 또는 사용자 상호 작용)를 다룰 때 특히 유용하다. 전통적인 순차 또는 명령형 프로그래밍에서는 코드가 단계별로 실행되며, 이전 작업이 완료될 때까지 각 작업이 대기한다. 이는 I/O 바운드 작업이나 오래 실행되는 작업을 처리할 때 비효율적일 수 있다. 반면에 논블로킹(non-blocking) 실행은 작업이 .. 2023. 11. 8.