Package com.streamconverter.command.rule
Class DatabaseFetchRule
java.lang.Object
com.streamconverter.command.rule.DatabaseFetchRule
- All Implemented Interfaces:
IRule
データベースからデータを取得するルール
このクラスは、データベースからデータを取得するためのルールを定義します。 具体的なデータベース接続やクエリ実行のロジックは、このクラスで実装されます。
使用例:
// 基本的な使用例
DatabaseFetchRule rule = new DatabaseFetchRule(
"jdbc:h2:mem:testdb",
"SELECT name FROM users WHERE id = ?"
);
String result = rule.apply("123"); // ユーザーID 123 の名前を取得
// NavigateCommandと組み合わせた使用例
JsonNavigateCommand command = new JsonNavigateCommand("$.userId", rule);
command.execute(inputStream, outputStream); // JSON中のuserIdでDBを検索して置換
セキュリティ機能:
- SELECTクエリのみ許可(INSERT/UPDATE/DELETE等は禁止)
- SQLインジェクション攻撃の検出と防止
- 許可されたデータベーススキーマのみ接続可能
- 入力パラメータの自動サニタイズ
-
Constructor Summary
Constructors -
Method Summary
-
Constructor Details
-
DatabaseFetchRule
コンストラクタデータベースのURLとクエリを指定して、DatabaseFetchRuleのインスタンスを初期化します。 クエリは一意な結果を返すように設計されるべきです(例:DISTINCT、LIMIT句の使用など)。 セキュリティのため、URLとクエリの検証を実行します。
- Parameters:
databaseUrl
- データベースのURL(許可されたスキーマのみ)query
- データベースに対するクエリ(SELECTクエリのみ許可)- Throws:
IllegalArgumentException
- 無効なパラメータが指定された場合SecurityException
- セキュリティ違反が検出された場合
-
-
Method Details