Oracle 10G データベースに接続し、そこからデータを読み取り、SQL Server データベースに接続してデータをテーブルに書き込むデーモン ベースの Java プロセス (Web ベースではない) を作成する必要があります。
簡単に聞こえますが、これについていくつか質問があります。
2 つの jdbc ドライバーが必要です。つまり、1 つは Oracle データベースに接続するため、もう 1 つは SQL Server データベースに接続するためです。SQL Server jdbc ドライバーは jtds jdbc ドライバー ( http://jtds.sourceforge.net/ ) であり、Oracle i では標準の oracle jdbc ドライバーを使用します。クラスパスで両方のドライバーを一緒に使用すると、問題が発生する可能性がありますか?
私の推測では、必要なのは、接続を管理するための ConnectionManager クラスと、Oracle からの読み取りか SQL Server への書き込みかに応じて、必要な接続を取得するために関連するメソッドを呼び出すクライアント DAO クラスだけです。これは合理的なアプローチですか、それともより良い設計/パターンがありますか?
編集
わかりました、簡単な設計ソリューションをまとめようとしました。下の画像を参照してください
私が抱えていると思う問題は、コミットする方法です。加工の流れはこちら
- InvoiceBD はファクトリ クラスから Oracle 接続を取得し、Oracle 接続オブジェクトを渡して InvoiceUploadDAO.readData を呼び出します。
- InvoiceBD はファクトリ クラスから SQL Server 接続を取得し、InvoiceUploadDAO.writeData を呼び出して SQL Server 接続オブジェクトを渡します。
- InvoiceBD は、Oracle 接続を再利用して InvoiceUploadDAO.update ステータスを呼び出し、Oracle データベースのステータスを「完了」に設定します。
InvoiceBD は Oracle 接続をコミットします。InvoiceBD は SQL Server 接続をコミットします。
または、何か問題が発生した場合、両方の接続オブジェクトがロールバックされます。
それは正しいと思いますか?
ありがとう