java 实现一个注册用户功能,用户名不能重复,需要用synchronized吗

我在DAO层写了一个添加信息的方法,即将用户注册提交的信息添加进数据库,但要求用户名不能重复,问题是要不要在方法上加个synchronized呢?如果不加的话,会不会有这么一种情况,两个人同时注册,用户名都一样,结果数据库里存进两条用户名一样的数据呢?该怎么解决呢?

防止重复用户名,不需要加synchronized,因为加上这个后程序运行会慢,因为有很多不必要的同步判断。
可以在数据库上,保证用户名这个字段加上非重复约束的就可以了,真是出现重复了,就把这个抛出成异常,给Java程序判断吧。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-02-23
可能性还是有的,不过这种并发概率比较小吧。你可以指定逐渐为id,id自增。注册之前检索用户名,注册之后再检索一下
第2个回答  2014-02-23
你可以用ajax异步判断啊.提交之前先判断数据库中是否有这个人。如果有就提示信息,已经存在;否则就 注册呗。追问

主要问题是,如果我判断了没这个人,结果在我注册的时候还没注册完,结果有另一个人以相同的用户名抢先注册完成了,那我这边不就要么数据库里两条重复记录要么就注册失败吗

追答

你可以把 数据库的那个用户名设置为unique 啊!然后这样如果第一次判断时候没有。但是提交的时候有了,这样你返回一个错误页面。提示已经存在!虽然有点麻烦。 但是我暂时想到的只有这个!判断2次被。 文本框失去焦点的时候 一次。 提交的时候一次!