4

軟膏!

SOに関する別の質問/回答の一部(および同じことを主張する他のステートメント):

JPAによってデータベーススキーマを更新する場合(通常は良い習慣ではありませんが)

データベーススキーマを生成するためにJPA実装を使用すべきではないというのは本当ですか?

とにかく、私は自分自身でエンティティと関係をモデル化する必要があります。notnull、主キーと外部キー、データ型、サイズなどの制約も定義する必要があります。

使用中のJPA実装にDDLスキーマ作成コードに欠陥がなく、すべてのJPA制約、関係などを正しく指定していると仮定すると、JPA実装によって作成されたdbスキーマはまったく同じである必要があります。より良い-私自身が手作りしたスキーマとしてですよね?

これには、(ビジネスロジック)特定のINSERTトリガーなどの「特殊なケース」は含まれません。これらはJPA実装ではまったく生成できないためです(私が知る限り、間違っている場合は修正してください)。

これについてどう思いますか?
私は現在、最初にdbスキーマを手作りし、次にJPA制約、リレーションなどを設定し、JPA実装にdbスキーマも作成させています。次に、2つのスキーマを比較して、セットアップが正しく行われたかどうかを確認します。もちろん、これは、手作りのスキーマで行ったのと同じ列名なども指定する必要があることを意味します。

私の質問をより正確にするために; 私は、ORMフレームワークがスキーマを生成することを盲目的に信頼していません。むしろ、スキーマがどのように見えるかを考えてから、それに一致するようにフレームワークを構成します。
手作業でのみ、より効率的なスキーマを作成できると思いますが、結局のところ、ORMフレームワークでそれらを使用する必要があります(または使用したい)。したがって、そうすべきではありませんが、とにかくdbスキーマを作成するときは、ORMフレームワークの制限に留意する必要があります。

したがって、RDBMS固有のことを気にする必要がないように、ORMフレームワークを使用しているので、アプリケーションでRDBMS固有のDDLを使用してスキーマを作成することのポイントは何ですか?
既存のエキゾチックなスキーマを使用する必要がある場合は、スキーマを(再)作成する必要はありません。また、ORMフレームワークなどの汎用ツールを使用できない場合もあります。

4

2 に答える 2

8

私は通常、JPA に最初だけスキーマを作成させます。あとは手作業で微調整・メンテナンス。

私が手動でスキーマを維持することを好む理由はいくつかあります。

  • SQLコードにコメントを入れることができます
  • テーブルと列にコメント/説明を追加できます
  • JPAアノテーションでは不可能なテーブルスペースやその他のものを指定できます
  • スキーマの作成を複数の SQL ファイルに分割できます (たとえば、テーブルごとに 1 つ + 制約用に 1 つ)。
  • これにより、スキーマ移行スクリプトでスキーマ作成スクリプトの一部を再利用できます。たとえば、アプリのバージョン 2 で 3 つの新しいテーブルが導入された場合、3 つの新しいテーブルを作成する 3 つの SQL ファイルを再利用できる変更スクリプトが必要です。
  • 具体的なものではなく、シーケンスの同義語を使用する必要がある場合があります
  • 主キー制約の名前を選択できます
  • おそらく私が忘れた他の理由
于 2011-09-30T08:29:06.670 に答える
5

私は通常、反対のことを行います。つまり、DB スキーマを手動で作成し、IDE を使用してそこから JPA エンティティ構造をエクスポートします。その後、手動で JPA エンティティを再度調整します。

于 2011-09-30T08:27:47.997 に答える