私たちは現在、このプロジェクトのために内部的にOracle 10gを使用していますが、それは変更される可能性は低いですが、最終的にはこのアプリケーションを他の顧客に提供する予定で、代わりの無料DBを提案できる必要があります。HibernateアプリケーションをDB非依存にするには?
Hibernate永続性レイヤを、使用される基盤となるRDBMSから独立させる最も良い方法は何ですか?理想的には、JDBC URLと使用されている方言を変更するだけで、少なくともOracle 10gとMySQLまたはPostgreSQL間を切り替えることができます。
主な問題は、ID生成戦略にあります。私たちは現在、私たちのIDにシーケンスベースのジェネレータを使用しています。テーブルごとに1つのシーケンスがあります。明白な動きは、「ネイティブ」戦略に切り替えるようです。しかし、それはすべてのテーブルのための1つのユニークなシーケンスでしょうか? Oracle上で動作する本番システムの既存のデータはどうなりますか?移行する方法は?トラップとは何ですか?
1つのRDBMS /ダイアレクトから別のRDBMS /ダイアレクトに切り替える際に注意すべきことは何ですか?
ありがとうございました。しかし、新しく生成されたIDと重複することなく、既存のデータ(既存のIDとFKなどを含む)をどのように移行できると思いますか? –
まず、すべてのテーブルで最大の既存のIDを見つけなければなりません。次に、max_lo(hiloジェネレータのパラメータ)に使用する値を決定します。たとえば、値max_lo = 100で既存の最大IDが23456の場合、hi_valueテーブルのnext_valueフィールドを235に更新し、次のIDが23500から開始するようにします。 – YudhiWidyatama