3

データレイヤー単体テストには、Oracle データベース構文 (jdbc:hsqldb:mem:TestDB;sql.syntax_ora=true) で HSQLDB を使用しています。

(これは理想的ではないことを認識しており、実際の Oracle データベースに対してテストできればよりよいでしょう。ただし、自動テストをどこでも実行できるようにしたいので、これはオプションではありません。後のステップで、すべてのクエリまた、本番データベースと同様にセットアップされた実際の Oracle データベースでの統合テストでもテストされています。)

HSQLDB を使用したクエリで Oracle の外部結合 (+) 表記をサポートする方法はありますか?

私自身の意見では、(+) 表記を使用するのではなく、代わりに標準の外部結合表記を使用する必要があります。ただし、クエリの調整を担当する担当者はこの表記法を使用するため、彼らとのコミュニケーションはより困難になり、エラーが発生しやすくなります。解決策が見つからない場合は選択肢になるかもしれませんが、これはここでは問題ではありません。

次のスレッドを見つけまし 。インターフェイスは公式の HSQL リリースにはなりませんでした。

HSQLのこれに対する別の回避策はありますか?

単体テスト自体のどこかに (テスト データベース レベルではなく) クエリの書き換えを追加することもできますが、それは避けたほうがよいでしょう。

HSQL の回避策がない場合、この (+) 外部結合表記をサポートする、jar から起動可能な他のメモリ内データベース/データベースはありますか?

4

2 に答える 2

0

あなたの質問では、すべての「簡単な」可能性をすでに引用していると思います。

したがって、残っている唯一の方法は、コード内のクエリを書き直してから HSQLDB に送信することです。

(+) 表記を使用しないようにクエリを記述し、データベース チューナー用に (スクリプトを使用して) 書き直す方が簡単です。標準表記法はその構造により多くの情報を運ぶため、その書き換えは他の方向よりも簡単なはずです。

于 2013-05-22T10:25:00.330 に答える
0

使用しないでください。Oracle オプティマイザーがこれら 2 つの構文を異なる方法で処理する場合がありました。11g の時点でそれは終わっており、この構文に固執する理由はありません。

とにかく、Oracle には別の SQL 構文の拡張機能があります。たとえば、分析クエリなどです。自動テストには OracleXE を使用する必要があるかもしれません。

于 2013-05-22T10:33:50.027 に答える