1

MySQLでJPA-Hibernateを正しく使用するアプリケーションがあります。この場合、エンティティのID生成に自動戦略を使用しています。一方、Oracleを使用する他のアプリケーションがあり、このためにシーケンス戦略を使用しています。重要なのは、Oracle / MySQL / SQL Serverに「一般的な」戦略を使用して、アプリケーションをより移植性の高いものにすることが可能かどうかを知りたいということです。

ありがとう。

4

2 に答える 2

4

移植可能なソリューションを作成する簡単な方法は、TableGeneratorを使用することです。値はデータベース テーブルで管理され、SQL クエリで取得およびインクリメントされるため、データベース ベンダー固有の構造は使用されません。

于 2012-11-28T18:09:15.040 に答える
0

特定の DB 機能に依存しない一般的な戦略では、ID 生成用に追加のテーブルが必要です。そのような戦略: hilo, enhanced-table. uuid.hexまた、 、uuid、などの UUID 生成に基づく戦略を使用することもできますuuid2。他の戦略では、異なる DB 固有の機能を使用するため、動作が異なる場合があります。たとえばnative、MySQL と Postgres では動作が異なります。MySQL (ジェネレーター) ではオブジェクトを保存するときに挿入権があり、Postgres (シーケンス) では通常のフラッシュでのみ挿入されます。のソースDefaultIdentifierGeneratorFactoryを見て、考えられるすべての戦略を確認し、そのアルゴリズムとドキュメントを調べることをお勧めします。

一般に、2 つ以上の異種アプリを同じ DB で動作させることはお勧めできません。特に、すべてのアプリがデータベースに書き込みを行っている場合はなおさらです。DB の保守とリファクタリングは非常に困難です。

于 2012-11-28T10:08:18.110 に答える