hibernate应用实例:hibernate validator 验证数据合法性

随着ORM框架的应用,使得开发更加面向对象,不用再专门设计数据库,由编写实体,实体映射代替。

所以,实体的编写是非常基础而重要的工作,开发工作能及早做就不要往后拖。比如,验证数据的合法性,我们习惯在action或者controller中做,其实这些工作可以提前在实体做的。

 

JSR303Bean Validator是数据验证的规范,而hibernate validator 是其中的一个实现。

比如在User实体中,可以使用Hibernate Validator 来对该实体模型进行验证

需要引入包validation-api-1.0.0.GA.jarhibernate-validator-4.0.0.GA.jar

 

importjavax.persistence.Column;
importjavax.persistence.Entity;
importjavax.persistence.GeneratedValue;
importjavax.persistence.Id;
importjavax.persistence.Table;
 
importorg.hibernate.annotations.GenericGenerator;
importorg.hibernate.validator.constraints.Length;
importorg.hibernate.validator.constraints.NotBlank;
 
@Entity
@Table(name="t_user")
public class User {
 
@Id 
  @GeneratedValue(generator ="system-uuid") 
  @GenericGenerator(name ="system-uuid", strategy = "uuid") 
@Column(length=32)
privateString id;
 
@NotBlank
@Length(min=1,max=32)
@Column(nullable=false,length=32, unique=true, updatable=false)
privateString userName;
 
@Column(length=32)
privateString age;
 
publicString getId() {
returnid;
}
 
publicvoid setId(String id) {
this.id= id;
}
 
publicString getUserName() {
returnuserName;
}
 
publicvoid setUserName(String userName) {
this.userName= userName;
}
 
publicString getAge() {
returnage;
}
 
publicvoid setAge(String age) {
this.age= age;
}
}

 

测试类,通过hibernate validator验证输入数据的合法性

importjavax.validation.ConstraintViolation;
importjavax.validation.Validation;
importjavax.validation.Validator;
importjavax.validation.ValidatorFactory;
 
public static void main(String[] args) {
ValidatorFactoryfactory = Validation.buildDefaultValidatorFactory();
 Validator validator = factory.getValidator();
 
 User user = new User();
 user.setUserName("");
 user.setAge("23");
 
Set<ConstraintViolation<User>>constraintViolations =validator.validate(user);
for(ConstraintViolation<User> constraintViolation : constraintViolations) {
       System.out.print(constraintViolation.getPropertyPath() + ": ");
  System.err.println(constraintViolation.getMessage());
    }
}


打印异常信息

userName长度需要在1和32之间

userName: 不能为空

 

hibernate简单用起来是很简单的,但是如果要进行调优,还是很复杂的。后文中会介绍在实体模型中加入hibernate缓存。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 14
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值