軟膏!
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フレームワークなどの汎用ツールを使用できない場合もあります。