第20章 JoSQL

概要

JoSQL (SQL for Java オブジェクト) 言語を使用すると、Apache Camel で判定式および表現式を評価できます。JoSQL は SQL のようなクエリー構文を使用して、インメモリーの Java オブジェクトに対してデータ抽出やソートを実行できます。しかし、JoSQL はデータベースでは ありません。JoSQL 構文では、各 Java オブジェクトのインスタンスをテーブルの行とみなし、各オブジェクトのメソッドを列とみなして操作します。この構文を使用すると、Java オブジェクトのコレクションからデータを抽出および再設定する強力なステートメントを作成できます。詳細は http://josql.sourceforge.net/ を参照してください。

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>

静的インポート

アプリケーションコードで sql() static メソッドを使用するには、以下の import ステートメントを Java ソースファイルに追加します。

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

変数

表20.1「JoSQL 変数」 に、JoSQL を使用する際にアクセス可能な組み込み変数の一覧を示します。

表20.1 JoSQL 変数

名前説明

exchange

org.apache.camel.Exchange

現在のエクスチェンジ

in

org.apache.camel.Message

IN メッセージ

out

org.apache.camel.Message

OUT メッセージ

プロパティー

オブジェクト

キーが propertyであるエクスチェンジプロパティー

header

オブジェクト

キーが header である IN メッセージヘッダー

variable

オブジェクト

キーが variable である変数

例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>