2011-09-01 7 views
1

DML SQL文を作成するために使用されたBuilderパターンのどこかが見えました。私は、どのパターンがSQL DDLステートメントを構築するのに適しているのだろうと思っていました。SQL DDL文の作成:どのパターンが適切ですか?

私は(動的)単純なSQL DDL文を作成している、(専ら自己の教育目的のためにDBツール、)簡単なプログラムを考えています。どのパターンを考慮すべきかはわかりません。

ファクトリパターンを使用すると、具体的なデータベースプロバイダクラスライブラリからクライアントコードを切り離すことができます。私はそれがここではっきりとした選択だと思います(私が間違っていれば私を修正してください)。デコレータパターンはSQL文を作成するための私の最初の選択でしたが、いくつかの例をコーディングしてからthis answerを読むと、私はオブジェクトを構築していて既に作成されたオブジェクトをデコレートしていないので、デコレータを使用すべきではありません。

だから、どのパターンを考慮する必要がありますか?この場合、どのようなパターンが良い/良いのですか?

説明を明確にするためが更新されました。

+0

アプリケーションがDDLを動的に書く必要があり、あなたがDBツールを書いている場合を除きます。これが最も適切なデザインだと確信していますか? –

+0

はい、私はDBツールについて考えていました。はい、DDLステートメントは動的に作成されます。 – qlf00n

答えて

0

DBツールの「コア」は、DBに依存しない形式で所有している知識を表現する必要があります。データベース固有のコードが引き継がれ、その知識がDB固有のDDLに変換されます。

これを達成するには、おそらく何らかの依存性注入が必要になるでしょう。基本的な考え方は次のとおりです。アプリケーションのコアはインターフェイスのみで動作し、これらのインターフェイスで宣言されているもの以外は何も知りません。実行時に、これらのインタフェースを実装するDB固有のオブジェクトがインスタンス化され、コアに「注入」されます。 Createは、同じインターフェースセットを実装している他のオブジェクトセットと同じように、盲目的に「呼び出す」よりも作成します。

別のDBをサポートする必要がある場合、jutはこれらのインタフェースを実装し、実行時にインスタンス化する別のクラスのセットを作成します。

もちろんこれは単なる理論です。あなたは異なるデータベースシステム間に多くの微妙な違いがあることがわかります。私は完全に一般化された方法ですべてを表現することは難しいでしょう...

関連する問題