3

私は JPA を初めて使用し、エンティティのフィールドに@Version. 以前に存在しない場合、永続化プロバイダーが暗黙的なバージョン フィールドを作成するかどうかに興味があります。たとえば、objectdbの Web サイトには次のように記載されています。

「ObjectDB を使用する場合、オプティミスティック ロックはデフォルトで有効になり、完全に自動化されます。」

ただし、これはベンダー固有の動作のようです。たとえば、EclipseLink ではデフォルトで楽観的ロックが有効にならないためです。ロックを使用したい場合 (そして、はい、私は :-) を使用したい場合、すべてのエンティティに対して追加の属性を作成する必要がありますか? 仕様にヒントはありますか?

前もって感謝します!

4

1 に答える 1

3

はい、JPA@Versionアノテーションを使用するとバージョン プロパティを定義できます。ObjectDB はデフォルトでこのプロパティを作成するだけだと思います。

独自のプロパティは、Integer、Long、Short (またはそれらのプリミティブに相当するもの)、または java.sql.Timestamp にすることができます。

私が知っているほとんどの JPA プロバイダーは、@Versionアノテーションを明示的に使用する場合にのみ楽観的ロックを行います。

于 2012-12-04T05:34:19.927 に答える