您的位置:首页 > 其它

关于唯一约束的处理

2012-12-13 18:28 225 查看
一个很典型的例子,登录名不能重复的问题

非常危险的方式:

if(service.checkLoginName(loginName)) {

//在多线程情况下,当前线程运行到此处时有可能被挂起,而另外一个线程完全可以使用loginName注册成功

service.register(......);//然后当前线程恢复运行,再使用loginName注册成功,这样就有了登录名一样的两个用户。

}

解决方法:在数据库中创建唯一约束,而不是自己做处理保证唯一性(唯一性无法保证)

try {

service.register(......);//创建用户

}catch(DataIntegrityViolationException e) {//登录名已存在

//给页面提示信息

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐