目录
百战程序员,全站22050+开发课程+文档 ,学习精选优质好课快人一步!观看视频 快捷键ALT+N

JAVA全系列 教程

3762个小节阅读:7090.1k

收藏
全部开发者教程

C语言快速入门

JAVA全系列 教程

面向对象的程序设计语言

Python全系列 教程

Python3.x版本,未来主流的版本

人工智能 教程

顺势而为,AI创新未来

大厂算法 教程

算法,程序员自我提升必经之路

C++ 教程

一门通用计算机编程语言

微服务 教程

目前业界流行的框架组合

web前端全系列 教程

通向WEB技术世界的钥匙

大数据全系列 教程

站在云端操控万千数据

AIGC全能工具班

A

A A

White Night

阅读(469)
赞(0)

2.JSR 303 和 Hibernate 实现

2.1 JSR介绍

JCP(Java Community Process)是一个开发的国际组织,里面包含了一些Java开发者和其他被允许加入的成员。JCP组织主要负责对Java社区进行发展和更新。维护的规范包含:J2ME、J2SE、J2EE、XML等相关规范。组织成员可以提交JSR(Java Specification Requests,Java 规范提案),待组织成员通过提案后会把相关内容加入到下一个版本的规范中。

2.2 JSR 303介绍

JSR每个提案都带有数字名称。例如JSR 107、JSR 303等。一定要注意的是,对于JSR提案并不是数字越大就需要包含前面内容。例如JSR 107主要是对缓存的提案、JSR 303是对数据校验的提案,这两个提案不存在包含和被包含的关系,也不存在版本先后的关系。这个和我国政协会议是类似的,第一个政协委员提出的建议叫做建议1、第二个政协委员提出的建议是建议2。建议1建议提高个税起征点、建议2建议国家分配对象。这俩建议是没有关系的。

JSR 303是Java EE 6规范的子规范。叫做Bean Validation。这些规范都是注解。各大公司可以针对这些规范做具体实现。

在Java开发中使用的最多的JSR 303具体实现就是Hibernate框架中Hibernate-Validator。它对JSR 303的所有约定(constraint)都做了实现,同时还进行了一定的扩充。

2.3 Hibernate Validator包含的内容

Hiberante 框架是Java行业曾经风靡一时的ORM框架,目前在企业中只有一些老项目还在使用。

但Hibernate里面却有着一些很好的功能一直被使用。其中就包含hibernate-validator。

hibernate-validator对JSR 303实现都存在于依赖的Validation-api.jar的javax.validation.constraints包中。

里面所有注解都包含message属性,表示校验不通过后日志打印的信息。但是不建议设置,因为默认的提示信息就非常好。

Hibernate Validator对JSR 303具体实现的解释:

注解含义
@AssertFalse类型必须是布尔,取值必须为false
@AssertTrue类型必须是布尔,取值必须为true
@DecimalMax("3")最大值为3,value属性是String类型。
@DecimalMin("1")最小值为1,value属性是String类型。
@Digits(integer = 10,fraction = 3)integer:整数位最大长度,fraction小数位最大长度
@Email必须是邮箱地址。只要中间包含@,且@前后都具有超过1位的字符就能通过校验。字符可以是数字字母下划线
@Future类型必须是时间类型,允许为null,如果设置值必须是一个将来的时间
@FutureOrPresent类型必须是时间类型,允许为null,如果设置值必须是一个一个将来或现在的时间(精确到秒)
@Max(5)最大值为5,value属性是long类型
@Min(1)最小值为1,value属性是long类型。
@Negative必须是负数,对数据类型没有要求。
@NegativeOrZero必须是负数或零,对数据类型没有要求。
@NotBlank用在String类型。不能是空白(null和"")
@NotEmpty用在String类型。不能是空白(null和"")
@NotNull不能为null,可以是""。可以用在所有类型中。对于八大基本数据类型来说,永远不为null。
@Null必须为Null。可以用在所有类型中。对于八大基本数据类型来说,永远不可能为null。
@Past类型必须是时间类型,必须是一个过去的时间。精确到秒。
@PastOrPresent类型必须是时间类型,必须是一个过去的时间或现在的时间。精确到秒。·
@Pattern(regexp = "\w{1,6}")必须满足正则表达式。regexp是必有属性。
@Positive必须是正数,对数据类型没有要求。
@PositiveOrZero必须是正数或零,对数据类型没有要求。
@Size(min = 1,max = 10)用在String类型。个数必须在1和10之间

Hibernate-Validator还有除了JSR 303的额外补充,这些注解都在Hibernate-validator.jar的org.hibernate.validator.constraints包中。

注解含义
@Length(min = 1,max = 10)用在String类型。长度需要在1和10之间
@Range(min = 1,max = 10)数据类型没有要求。取值范围需要在1和10之间
@URL(port = 8080,host = "127.0.0.1",protocol = "https")需要是一个合法的URL。默认情况下只要是以http:开头即可。可以通过port限制端口、host限制主机名、protocol限制协议

 

北京市昌平区回龙观镇南店村综合商业楼2楼226室

©2014-2023 百战卓越(北京)科技有限公司 All Rights Reserved.

京ICP备14032124号-2