サロゲート主キーを使用するテーブルがあります。エンティティ (テーブル) の自然キーは名前空間 + 名前です。テーブルにアクセスする Web アプリケーションは、ユーザーがエンティティの任意のプロパティを更新できるようにする Web フォームをユーザーに提供します。ORMにHibernateを使用しています。session.update(entity) を発行する場合、Hibernate がデータベース内のレコードを識別できるように、エンティティの ID (代理キー) を入力する必要があります。これを行う2つの方法を考えることができます
(1)ID(非表示)をフロントエンドに渡し、フォームの更新時にビジネスレイヤーに戻ります
(2)自然キーのみを渡し、自然キーを使用してルックアップを行いますDAOレイヤーでIDを取得します。
自然キーは、フォームを使用して更新できないことに注意してください。オブジェクトの ID (名前空間 + 名前) を変更するための別の形式があり、同時実行性は問題ではありません。つまり、他の誰かが更新のためにロックを保持している間、誰も ID を変更できないため、自然キーを使用して検索すると、更新のリクエスト中に使用されたものと同じレコードが引き続き生成されます。
質問
(1)私が言及したもの以外に何かアプローチはありますか?
(2) これは通常、Web アプリケーションでどのように達成されますか?
検索してみましたが、これに関する情報はあまり見つかりませんでした。正しい言葉を選んで検索していない可能性があります。
質問する
210 次