`
springwork
  • 浏览: 3544 次
  • 性别: Icon_minigender_1
  • 来自: 西安
最近访客 更多访客>>
社区版块
存档分类
最新评论

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

    博客分类:
  • Java
阅读更多
保存或者更新对象时,防止出现同名的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;
}
分享到:
评论
4 楼 condeywadl 2009-11-21  
这样还是防止不了万无一失 强烈建议在设计数据库的时候建立约束...或者...悲观锁也行
3 楼 tianmo2008 2009-11-21  
javaeyebird 写道
同时有两个请求,名字相同,就可能会失效,原理同多线程领域的并发问题

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

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

现在做数据库的人越来月懒,把很多问题都抛给程序人员处理,好象他们的任务就是建表,建完就完事了
2 楼 javaeyebird 2009-11-20  
同时有两个请求,名字相同,就可能会失效,原理同多线程领域的并发问题

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

用更上层的代码来处理这个问题,又复杂又容易留下bug或性能瓶颈
1 楼 whaosoft 2009-11-20  
//userid不为空,说明是更新操作  
    if(user.getUserid()!=null){  
        hql += " and userid!="+user.getUserid();  
    }  


你为什么不用load 在配合dynamic-insert="true" dynamic-update="true" 使用??

相关推荐

    Java面试宝典2010版

    9、hibernate中的update()和saveOrUpdate()的区别,session的load()和get()的区别。 10、简述 Hibernate 和 JDBC 的优缺点? 如何书写一个 one to many 配置文件. 11、iBatis与Hibernate有什么不同? 12、写...

    Java面试宝典-经典

    9、hibernate中的update()和saveOrUpdate()的区别,session的load()和get()的区别。 122 10、简述 Hibernate 和 JDBC 的优缺点? 如何书写一个 one to many 配置文件. 122 11、iBatis与Hibernate有什么不同? 122 12、...

    最新Java面试宝典pdf版

    9、hibernate中的update()和saveOrUpdate()的区别,session的load()和get()的区别。 122 10、简述 Hibernate 和 JDBC 的优缺点? 如何书写一个 one to many 配置文件. 122 11、iBatis与Hibernate有什么不同? 122 12、...

    Java面试笔试资料大全

    9、hibernate中的update()和saveOrUpdate()的区别,session的load()和get()的区别。 122 10、简述 Hibernate 和 JDBC 的优缺点? 如何书写一个 one to many 配置文件. 122 11、iBatis与Hibernate有什么不同? 122 12、...

    JAVA面试宝典2010

    9、hibernate中的update()和saveOrUpdate()的区别,session的load()和get()的区别。 122 10、简述 Hibernate 和 JDBC 的优缺点? 如何书写一个 one to many 配置文件. 122 11、iBatis与Hibernate有什么不同? 122 12、...

    java面试题大全(2012版)

    9、hibernate中的update()和saveOrUpdate()的区别,session的load()和get()的区别。 122 10、简述 Hibernate 和 JDBC 的优缺点? 如何书写一个 one to many 配置文件. 122 11、iBatis与Hibernate有什么不同? 122 12、...

    Java面试宝典2012版

    9、hibernate中的update()和saveOrUpdate()的区别,session的load()和get()的区别。 122 10、简述 Hibernate 和 JDBC 的优缺点? 如何书写一个 one to many 配置文件. 122 11、iBatis与Hibernate有什么不同? 122 ...

    java面试宝典2012

    9、hibernate中的update()和saveOrUpdate()的区别,session的load()和get()的区别。 133 10、简述 Hibernate 和 JDBC 的优缺点? 如何书写一个 one to many 配置文件. 133 11、iBatis与Hibernate有什么不同? 133 12、...

    Java面试宝典2012新版

    9、hibernate中的update()和saveOrUpdate()的区别,session的load()和get()的区别。 122 10、简述 Hibernate 和 JDBC 的优缺点? 如何书写一个 one to many 配置文件. 122 11、iBatis与Hibernate有什么不同? 122 12、...

    Java 面试宝典

    25、abstract 的 method 是否可同时是 static,是否可同时是 native,是否可同时是 synchronized? ................................................................................................................

Global site tag (gtag.js) - Google Analytics