使用hibernate验证电子邮件是否已存在于我的数据库中

时间:2015-07-12 14:36:00

标签: java mysql hibernate

我需要验证要在我的应用程序网站中注册的新用户的电子邮件。如果电子邮件已经在我的数据库(mysql)中,那么一定不要接受这个注册,然后对他说:"你的电子邮件已经使用过"。 现在我可以将用户保存在我的数据库中,但是如何通过他的电子邮件检查它们,而不是重复我的应用程序网站中的铭文。

这是我的Dao图层类:

public class UserDaoMysql implements UserDao {

    private Session session;


    private void openSession(){
        SessionFactory sessionFactory=HibernateUtil.getSessionFactory();
        session = sessionFactory.openSession();
        session.beginTransaction();
    }

    private void closeSession(){
        session.getTransaction().commit();
        session.close();
    }

    public void insert(User user) {

        if(checkEmail(user)){

        openSession();
        User p = new User(user.getName(), user.getEmail(), user.getPassword());
        session.save(p);
        System.out.println("sauvegarde reussi");
        closeSession();

        }



    }

    public boolean checkEmail(User user){


        return true;
    }

}

这是我的用户bean:

@ManagedBean(name="user")
public class User {

    private int id;
    private String name;
    private String email;
    private String password;
    private String confirmationPass;
//  private image 


    public User() {
        super();
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }


    public String getConfirmationPass() {
        return confirmationPass;
    }

    public void setConfirmationPass(String confirmationPass) {
        this.confirmationPass = confirmationPass;
    }


    public User(int id, String name, String email, String password,
            String confirmationPass) {
        super();
        this.id = id;
        this.name = name;
        this.email = email;
        this.password = password;
        this.confirmationPass = confirmationPass;
    }

    public User(int id, String name, String email, String password) {
        super();
        this.id = id;
        this.name = name;
        this.email = email;
        this.password = password;
    }

    public User(String name, String email, String password) {
        super();
        this.name = name;
        this.email = email;
        this.password = password;
    }

    @Override
    public String toString() {
        return "User [id=" + id + ", Name=" + name + ", email=" + email
                + ", password=" + password + "]";
    }

    public void save(){


        UserBusiness userBusiness = new UserBusinessImp();
        userBusiness.add(new User(name, email,password));

    }

}

我创建了一个表"用户"在我的数据库中。

也许有一个注释可以帮助我们将电子邮件属性指定为唯一的或其他的。

1 个答案:

答案 0 :(得分:2)

您可以在表格的电子邮件列中创建唯一键。之后,使用@Column(unique=true)装饰您的字段,这将向Hibernate指示此字段具有唯一键。

另外,请注意您的注释。这与您的问题无关,但是@ManagedBean将该类标记为能够与JSF中的视图交互的bean。您可能希望/需要使用@Entity代替。