3

クラス内の文字列として SQL ステートメントを作成することを避けるために、それらを.sql同じパッケージ内のファイルとして配置し、その内容を静的コンストラクター内の文字列に読み取りました。この理由は、SQL が照会している ERP システムのために、SQL が非常に複雑であるためです。

この方法に問題はありませんが、SQL 読み取りメカニズムは単純にファイル全体を読み取るだけなので、そのファイル内のコメントが行末にあると読み取りが失敗する可能性があります。最初に読み取るときに余分な空白が削除され、改行を削除します。完全にコメントされた行 (つまり、 で始まる行--は削除されます)。

ファイルを読み取ってコメント行などを削除する単純な読み取りを強化できますが、SQL ファイルを読み取ってクリーンアップできるものが既に利用可能であるかどうか疑問に思う必要があります。

4

1 に答える 1

0

クエリをXMLに格納し、実行時にカスタムのStoredQueriesCacheオブジェクトにXMLをロードすることで、これまで取り組んできたプロジェクトで同じ問題が解決されるのを見てきました。クエリを取得するには、StoredQueriesCacheオブジェクトのメソッドを呼び出し、クエリ名(XMLで定義されている)を渡すだけで、クエリが返されます。

このようなものを書くのはかなり簡単です。XMLは次のようになります...

<Query>
  <Name>SomeUniqueQueryName</Name>
  <SQL>
    SELECT someColumn FROM someTable WHERE somePredicate
  </SQL>
</Query>

保存されたクエリごとに1つの要素があります。XMLは、アプリケーションの起動時にファイルからメモリに読み込まれるか、必要に応じてファイルから遅延読み込まれる可能性があります。次に、XMLを保持するStoredQueriesCacheオブジェクトには、名前で個々のクエリを返すメソッドがあります。私の経験では、改行はXMLノードの内部テキストの一部であるため、クエリにコメントを含めることで問題が発生することはありませんが、クエリを取得するStoredQueriesCacheメソッドが必要な場合は、コメントを解析できます。

これは、コードに埋め込まずに、またストアドプロシージャを使用せずに、クエリを格納するための最も整理された方法であることがわかりました。正直なところ、これを行うライブラリが必要です。多分私が書きます!

于 2012-10-10T20:00:30.727 に答える