20장. JoSQL

20.1. 개요

JoSQL(Java 개체용 SQL) 언어를 사용하면 Apache Camel에서 서술자 및 표현식을 평가할 수 있습니다. JoSQL은 SQL과 같은 쿼리 구문을 사용하여 메모리 내 Java 개체의 데이터에 대한 선택 및 순서 지정 작업을 수행합니다. JoSQL은 데이터베이스가 아닙니다. JoSQL 구문에서 각 Java 개체 인스턴스는 테이블 행처럼 취급되며 각 개체 메서드는 열 이름처럼 처리됩니다. 이 구문을 사용하면 Java 개체 컬렉션에서 데이터를 추출하고 컴파일하기 위한 강력한 문을 구성할 수 있습니다. 자세한 내용은 http://josql.sourceforge.net/ 을 참조하십시오.

20.2. JoSQL 모듈 추가

경로에서 JoSQL을 사용하려면 예 20.1. “camel-josql 종속성 추가” 과 같이 camel-josql 에 대한 종속성을 프로젝트에 추가해야 합니다.

예 20.1. camel-josql 종속성 추가

<!-- Maven POM File -->
...
<dependencies>
  ...
  <dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-josql</artifactId>
    <version>${camel-version}</version>
  </dependency>
  ...
</dependencies>

20.3. 정적 가져오기

애플리케이션 코드에서 sql() 정적 메서드를 사용하려면 Java 소스 파일에 다음 import 문을 포함합니다.

import static org.apache.camel.builder.sql.SqlBuilder.sql;

20.4. 변수

표 20.1. “SQL 변수” JoSQL을 사용할 때 액세스할 수 있는 변수를 나열합니다.

표 20.1. SQL 변수

이름유형설명

exchange

org.apache.camel.Exchange

현재 교환

in

org.apache.camel.Message

IN 메시지

out

org.apache.camel.Message

OUT 메시지

속성

개체

키가 속성인 교환 속성

헤더

개체

키가 헤더인 IN 메시지 헤더

variable

개체

키가 변수인 변수

20.5. 예제

예 20.2. “JoSQL을 사용하는 경로” JoSQL을 사용하는 경로를 표시합니다.

예 20.2. JoSQL을 사용하는 경로

<camelContext>
  <route>
    <from uri="direct:start"/>
    <setBody>
      <language language="sql">select * from MyType</language>
    </setBody>
    <to uri="seda:regularQueue"/>
  </route>
</camelContext>