Spring 13

토비의 봄 TV - Reactive Streams Operators (2)

Observable 형태를 발전시킨 Publisher 와 Subscriber 를 만드는 방식을 이전 시간에 살펴보았다. 이번엔 이를 조금 더 발전 시켜서 Operator 를 추가하는 방법과 동작방식을 살펴보고 실제 Reactive Strems 의 구현체인 Reactor 까지 사용해보자. 복습 ReactiveStreams 는 아래 기능들을 제공한다. Publisher Subscriber Subscription Processor Publisher 가 가장 중요한데, 데이터스트림을 계속해서 만들어내는 Provider 역할을 한다. 아래 코드를 살펴보자. import org.reactivestreams.Publisher; import org.reactivestreams.Subscriber; import org...

Spring/Webflux 2022.06.07

토비의 봄 TV - Reactive Streams (1)

Reactive Programming 데이터가 변경될 때 마다 이벤트를 발생시켜서 데이터를 계속적으로 전달하는 Push 방식에 중점을 둔 프로그램 패러다임 Push 방식 (비동기 방식) 비동기 방식으로 데이터의 변화가 발생했을 때 변경이 발생한 곳에서 데이터를 보내주는 방식을 말한다. Iterable 과 Observable Iterable 데이터 순회를 가능하게 해주는 인터페이스이다. java 에서 제공되고 있는 Iterator 패턴의 인터페이스 list 와 같은 collection 들은 Iterable 을 상속 받고 있다. Iterable 를 상속받은 하위 객체들은 for-each loop 를 사용할 수 있다. Iterable 인터페이스 안에는 iterator 라는 메서드가 존재한다. Iterator ..

Spring/Webflux 2022.06.04

JDBC Statement와 PreparedStatement

→ 이 둘의 가장 큰 차이는 캐시사용 여부의 차이이다. 쿼리문을 실행하게 될 때 [문장분석 → 컴파일 → 실행단계] 의 과정을 실행하게 되는데 Statement 의 경우 쿼리가 매번 실행될 때 이러한 과정이 일어나는 반면, PreparedStatement 의 경우 처음만 위 과정을 거친 후에 캐싱된 실행계획을 재사용하므로 DB 부하를 줄일 수 있다. PreparedStatement 미리 컴파일 한 후 파라미터 값만 동적쿼리로 재사용할 때 주로 사용된다. 개발자 의도에 작성된 쿼리문이 캐싱되어 있으므로 SQL Injection 과 같이 임의적인 SQL문을 주입하여 실행되게 하는 보안상의 이슈도 막을 수 있다. Statemetn 단 한번의 조회나 create, alter, drop 같은 작업을 할 시에는 S..

Spring 2021.07.05