5

私はJPAを初めて使用し、JPAについて多くのことを学んでいます。最近、JPAプロバイダーとしてEclipseLinkを使用してアプリケーションをデプロイしましたが、正常に実行されています。

ここで、マップされたテーブルの1つに列を追加する必要があります。この追加のフィールドはレポート用であり、アプリケーションには影響しません。そのため、うまく機能しているものには触れたくありません。もちろん、このフィールドをマッピングに含めるために、やがてアプリケーションを更新しますが、今はやりたくありません。

この列の追加は、DBAによってテーブルに対して直接外部で行われます。この追加は私のアプリケーションを壊しますか?

マップされたフィールドに変更はなく、JPAに関する限り、何も変更されていないため、これは発生しないはずです。JPAは何が追加されたかを認識しないため、すべてが中断することなく機能するはずです。

私が間違っている場合は訂正してください。ありがとう。

4

3 に答える 3

9

破損する理由はありません。JPAでは、すべての列をエンティティ内のフィールドにマップするように強制されることはありません。新しい列が必須(NOT NULL)であり、デフォルト値がない場合を除きます(たとえば、挿入時)。

于 2012-07-19T14:18:58.327 に答える
5

この追加は私のアプリケーションを壊しますか?

いいえ、それはしません。

JPAを使用すると、実際に必要なテーブルとフィールドのみをマップできます。

于 2012-07-19T14:17:59.833 に答える
4

JPA、Hibernate、EclipseLinkなどのORMは内部で何をしますか?データモデルからSQLを生成し、透過的な方法でデータベースを操作できるようにします。

データベースとの対話に使用するSQLに変更を必要としない変更をデータベースに適用した場合(制約やnull以外の列を追加していない場合)、何も壊れません。SQLクエリは、データベースからの書き込み/読み取り時に、追加された列を使用しません。

逆に、制約に変更を適用すると、列を追加しなくてもコードが機能しなくなる可能性があります。

于 2012-07-19T14:27:56.690 に答える