第172章 JPA Component(JPA コンポーネント)
Camel バージョン 1.0 で利用可能
jpa コンポーネントを使用すると、EJB 3 の Java Persistence Architecture(JPA)を使用して永続ストレージから Java オブジェクトを保存および取得できます。これは、OpenJPA、Hibernate、TopLink などのオブジェクト/Relational Mapping(ORM)製品をラップする標準インターフェースレイヤーです。
Maven ユーザーは、このコンポーネントの pom.xml
に以下の依存関係を追加する必要があります。
<dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-jpa</artifactId> <version>x.x.x</version> <!-- use the same version as your Camel core version --> </dependency>
172.1. エンドポイントへの送信
Java エンティティー Bean をデータベースに保存するには、これを JPA プロデューサーエンドポイントに送信します。In メッセージのボディーはエンティティー bean(つまり @Entity アノテーションを持つ POJO)またはエンティティー Bean のコレクションまたは配列であると見なされます。
ボディーがエンティティーの一覧である場合は、プロデューサーエンドポイントに渡される設定として entityType=java.util.ArrayList を使用するようにしてください。
ボディーに前述のタイプの 1 つが含まれていない場合は、エンドポイントの前に Message Translator を置き、最初に必要な変換を実行します。
Camel 2.19 以降では、プロデューサーにQuery または
の nativeQuery
クエリー
を使用することもできます。また、パラメーター
の値でも Simple 式を使用できます。これにより、メッセージボディー、ヘッダーなどからパラメーター値を取得できます。これらのクエリーは、SELECT
JPQL/SQL ステートメントを使用した一連のデータの取得に使用できます。また、UPDATE
/DELETE
JPQL/SQL ステートメントを使用して一括更新/削除を実行するために使用できます。namedQuery
で UPDATE
/DELETE
を実行すると、query
および nativeQuery
とは異なり名前付きクエリーを確認しない場合、useExecuteUpdate
を true
に指定する必要があります。