加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

逻辑:数据库或应用措施/ 2(束缚搜查)

发布时间:2021-03-06 23:22:37 所属栏目:编程 来源:网络整理
导读:这是 this question的特定版本. 我想搜查是否插入了一再的行.我应该在我的应用措施层中以编程方法搜查它: if (exists(obj)){ throw new DuplicateObjectException();}HibernateSessionFactory.getSession().save(obj); 可能我应该捕捉数据库层激发的非常并在

这是 this question的特定版本.
我想搜查是否插入了一再的行.我应该在我的应用措施层中以编程方法搜查它:

if (exists(obj))
{
    throw new DuplicateObjectException();
}
HibernateSessionFactory.getSession().save(obj);

可能我应该捕捉数据库层激发的非常并在违背束缚时触发?

try
{
    HibernateSessionFactory.getSession().save(obj);
}
catch(ConstraintViolationException e)
{
    throw new DuplicateObjectException();
}

编辑:换句话说:固然束缚是保存的(无论怎样它是好的数据库计划,我不能确定我的应用措施将是会见该表的独逐一个)我是否应该依靠束缚并处理赏罚它的违规非常会进步,可能我最好照旧搜查一下?

EDIT2:我虽然搜查一个事宜中的插入,锁定表以确保在此时代没有其他历程正在写另一个记录

办理要领

起首,您必需在数据库上具有主键或独一束缚才气正确实验此独一性 – 毫无疑问.

鉴于存在束缚,您应该在应用措施中编写哪种方法?我的偏好是实行插入并捕捉非常.由于或许大大都插入城市乐成,只有少数会由于一再而失败(这就是“非常”所体现的!):在数据库要执行本身的束缚搜查时,在每次插入之前执行存在搜查是低效的.

另外,理论上也许存在搜查错误 – 假如其他人想法在您的存在搜查和插入之间的小隔断内提交具有沟通键值的记录.然后,假如您没有捕捉数据库非常,您将信托插入乐成,而究竟上它没有.

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读