異なるテクノロジーを使用して同じデータベースにアクセスしたい2つのチームがあります。1つはJPA(具体的にはHibernate)を使用します。もう1つはプレーンJDBCを使用します。
各チームが各テクノロジーのデフォルト構成や「ベストプラクティス」を使用していると仮定して、懸念事項のリストを作成するように依頼されました。
これは新しいデータベースであるため、スキーマがJPAチームのみ、またはJDBCチームのみによって設計されていると想像してください。その後、両方がデータベースにアクセスしようとします。
あなたの経験を共有していただけますか?
更新:私はここで意見を求めていません。JPAとJDBCのどちらが「優れている」かは関係ありません。2つのテクノロジーを組み合わせる際の相互運用性に関する懸念事項の客観的なリストを求めています。
これが私が探しているものの例です:
シナリオ:ユーザーが行を読み取り、メモリ内で変更して、データベースに保存し直します。
version
が各テーブルに列を追加することにより、楽観的ロックを使用する場合。SELECT ... FOR UPDATE
同時更新を防ぐために使用します。JDBC実装がJPA規則を認識せずversion
、コミット時に更新されない場合に何が起こるか想像してみてください。
SELECT
して行を読み取り、version
1に等しいことを確認します。SELECT ... FOR UPDATE
。version
。version
はまだ1に等しいため、コミットは実行されます。教訓:JDBC実装は、version
列を更新することを知っている必要があります。
他の人が答えるのを待っている間に自分のリストを作成する:
@Id @GeneratedValue(strategy=GenerationType.SEQUENCE)
を使用する場合は、シーケンステーブルを作成して使用します(例hibernate_sequence
)。JDBCも同じことをする必要があります。この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加