论坛首页 入门技术论坛

【Hibernate】saveOrUpdate-验证用户名是否重复

浏览 3566 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (11) :: 隐藏帖 (3)
作者 正文
   发表时间:2009-11-18   最后修改:2009-11-18
保存或者更新对象时,防止出现同名的User对象
/**
 * 在更新时,验证用户名是否重复
 */
public String saveOrUpdate(User user) {
	String hql = "from User where username=?";

	//userid不为空,说明是更新操作
	if(user.getUserid()!=null){
		hql += " and userid!="+user.getUserid();
	}
	List list = getHibernateTemplate().find(hql, user.getUsername());
	
	//list有元素,说明用户名重复
	if((list!=null) && (list.size()>0)){
		return "用户名重复!";
	}
	getHibernateTemplate().saveOrUpdate(user);
	return null;
}
   发表时间:2009-11-20  
//userid不为空,说明是更新操作  
    if(user.getUserid()!=null){  
        hql += " and userid!="+user.getUserid();  
    }  


你为什么不用load 在配合dynamic-insert="true" dynamic-update="true" 使用??
0 请登录后投票
   发表时间:2009-11-20  
同时有两个请求,名字相同,就可能会失效,原理同多线程领域的并发问题

对于避免注册改名时重名,通常最有效的方案是在数据表的用户名字段上设置唯一性约束

用更上层的代码来处理这个问题,又复杂又容易留下bug或性能瓶颈
0 请登录后投票
   发表时间:2009-11-21  
javaeyebird 写道
同时有两个请求,名字相同,就可能会失效,原理同多线程领域的并发问题

对于避免注册改名时重名,通常最有效的方案是在数据表的用户名字段上设置唯一性约束

用更上层的代码来处理这个问题,又复杂又容易留下bug或性能瓶颈

现在做数据库的人越来月懒,把很多问题都抛给程序人员处理,好象他们的任务就是建表,建完就完事了
0 请登录后投票
   发表时间:2009-11-21  
这样还是防止不了万无一失 强烈建议在设计数据库的时候建立约束...或者...悲观锁也行
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics