これは、この質問の特定のバージョンです。
重複する行を挿入していないか確認したい。アプリケーション層でプログラムで確認する必要があります。
if (exists(obj))
{
throw new DuplicateObjectException();
}
HibernateSessionFactory.getSession().save(obj);
または、データベースレイヤーによってスローされ、制約に違反したときにトリガーされる例外をキャッチする必要がありますか?
try
{
HibernateSessionFactory.getSession().save(obj);
}
catch(ConstraintViolationException e)
{
throw new DuplicateObjectException();
}
編集:言い換えると、制約は残っていますが(とにかくデータベース設計は優れており、テーブルにアクセスするのは私のアプリだけかどうかはわかりません)、制約に依存して、その違反を処理しますか?上がるか、とにかくチェックしたほうがいいですか?
EDIT2:もちろん、トランザクション内でチェック+挿入を行い、その間に他のプロセスが別のレコードを書き込んでいないことを確認するためにテーブルをロックします