`
springwork
  • 浏览: 3621 次
  • 性别: 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" 使用??

相关推荐

    使用hibernate做的一个登录的小实例,代码大部分都是自动生成

    【标题】:使用Hibernate实现的登录实例 ...通过本实例,学习者可以了解到如何利用Hibernate连接数据库、执行CRUD操作,以及实现简单的用户登录验证。这将为进一步深入学习Hibernate和Java Web开发打下坚实基础。

    Spring mvc+hibernate例子(包括登录、增删改查等简单功能)

    - 接收用户输入,验证用户名和密码。 - 使用 Hibernate 查询用户信息并与输入对比。 - 验证成功后,创建会话并保存用户信息。 2. **添加功能:** - 接收表单数据,创建新对象。 - 调用 DAO 的 `save()` 方法...

    basic-hibernate:封装Hibernate4数据库访问

    运行`mvn test`命令,可以验证数据库访问功能是否正确。测试用例不仅有助于确保代码质量,还能提供实例教程,帮助理解如何使用封装的API。 在Hibernate4中,数据操作主要有以下几种方式: - 持久化操作:使用`...

    struts2+hibernate 注册与登陆源代码

    登录时,利用Session的`get()`或`load()`方法根据用户名查找用户,再比较输入的密码是否与数据库中的一致。 **整合Struts2和Hibernate** 在Struts2和Hibernate整合的过程中,通常会在Action类中注入SessionFactory...

    Spring3整合Hibernate4测试Demo

    11. **测试**:Demo可能包含JUnit测试用例,验证Spring和Hibernate的整合是否正确,以及数据访问功能是否按预期工作。 通过学习和实践这个"Spring3整合Hibernate4测试Demo",初学者可以深入了解Spring和Hibernate的...

    hibernate租房系统

    在Hibernate中,我们可以利用`Session.save()`或`Session.saveOrUpdate()`方法保存新用户。例如: ```java User newUser = new User(); newUser.setUsername("username"); newUser.setPassword("password"); //...

    struts+hibernate+Spring面试题

    4. update()与saveOrUpdate():update()用于更新已存在的持久化对象,而saveOrUpdate()根据对象是否已有ID判断是保存还是更新。 5. 拒绝连接原因:数据库连接池满、网络问题、数据库服务未启动、用户名/密码错误等...

    spring+hibernate+struts框架注册

    Service层负责业务逻辑,例如验证用户名的唯一性、加密密码等。这些Service可以通过Spring的@Autowired注解注入到需要它们的Controller中。 Struts2作为前端控制器,会有一个专门处理注册请求的Action,比如...

    hibernate做的一个图书系统例子

    5. Test:测试类,用于验证程序功能是否正常。 五、实体类设计 1. Book类:包含书名、作者、出版社、出版日期等属性,以及相应的getter和setter方法。 2. Author类:包含作者名、简介等属性。 3. Publisher类:包含...

    Hibernate的一个例子

    1. **配置Hibernate**:创建hibernate.cfg.xml文件,配置数据库连接信息,如URL、用户名、密码以及JDBC驱动类。 2. **创建实体类**:根据数据库表结构,定义Java类,使用Hibernate的注解(@Entity、@Table、@Id等)...

    凯达BAM 项目Hibernate实现

    - 测试代码:可能包含JUnit测试,用于验证Hibernate的正确配置和功能实现。 通过深入学习和实践这个项目,你可以掌握Hibernate的基本用法,理解其在实际项目中的应用,并提升你在BAM项目中的数据库操作能力。同时,...

    struts2_hibernate

    Struts2和Hibernate是两种非常重要的Java Web开发框架,它们在构建高效、可维护的Web应用程序中发挥着关键作用。Struts2是一个基于MVC(Model-View-Controller)设计模式的开源框架,用于简化Java Servlets和JSP的...

    Hibernate:用户注册、查询用户信息、用户删除、用户修改功能.zip

    用户注册涉及新用户的创建,这通常需要收集和验证用户输入的数据,然后通过Hibernate将这些数据存储到数据库中。查询用户信息可能包括根据用户名、ID或其他条件检索用户数据,并在前端展示。用户删除则意味着从...

    Hibernate的Java控制台应用Demo

    2. **配置文件**:在Hibernate Tryout项目中,通常会有`hibernate.cfg.xml`文件,这是Hibernate的配置文件,用于设置数据库连接信息(如URL、用户名、密码)、JDBC驱动、方言等。此外,可能还有实体类的映射文件(如...

    struts+hibernate 实现账户注册

    Struts和Hibernate是两种常用的Java开发框架,它们在构建Web应用程序时发挥着重要作用。Struts主要负责MVC(模型-视图-控制器)架构的实现,而Hibernate则是一个对象关系映射(ORM)工具,用于简化数据库操作。在这...

    这是本人写的论坛系统知识总结

    - **功能描述**:该方法用于验证用户名是否仅由字母、数字或下划线组成。 - **实现细节**: - `^\\w+$`:表示从头到尾只包含字母、数字或下划线。 - `Pattern.compile()`:用于编译正则表达式。 - `matcher()`:...

    hibernate学生报到管理系统

    《使用Hibernate框架完成的学生报到管理系统详解》 在IT行业中,高效的数据库操作是任何系统的基础,尤其是在处理大量数据时。Hibernate作为一个强大的Java持久化框架,为开发者提供了与数据库交互的简便方式,极大...

    hibernate黑马全视频重点记录

    1. **配置**: Hibernate的配置通常在`Hibernate.cfg.xml`文件中进行,这里可以设置数据库连接信息,包括URL、驱动、用户名和密码。还可以配置是否显示生成的SQL语句以及自动管理数据库表的策略,如`create`, `update...

    JavaProject测试hibernate3.2的增删改查

    10. **测试类**:如`HibernateTest.java`,用于验证上述操作是否正确执行。 通过这个项目,初学者可以了解并实践Hibernate的核心功能,同时学习如何将这些功能融入到实际的Java应用中。通过反复练习,可以加深对ORM...

Global site tag (gtag.js) - Google Analytics