成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Hibernate Validator深入剖析

開發 后端
這里介紹進行驗證更好的方法是使用 Hibernate Validator。驗證的定義都被通過注釋 添加到了模型層中,同時還有對所包含的驗證處理的支持。

在向大家詳細介紹Hibernate Validator之前,首先讓大家了解下Commons Validator 也有自己的缺陷,然后全面介紹Hibernate Validator。

更好的方法Hibernate Validator

進行驗證的一種典型方法是對簡單的驗證使用 Commons Validator,并在控制器中編寫其他一些驗證邏輯。Commons Validator 可以生成 JavaScript 來對視圖中的驗證進行處理。但是 Commons Validator 也有自己的缺陷:它只能處理簡單的驗證問題,并且將驗證的信息都保存到了 XML 文件中。Commons Validator 被設計用來與 Struts 一起使用,而且沒有提供一種簡單的方法在應用程序層間重用驗證的聲明。

在規劃有效性驗證策略時,選擇在錯誤發生時簡單地處理這些錯誤是遠遠不夠的。一種良好的設計同時還要通過生成一個友好的用戶界面來防止出現錯誤。采用預先進行的方法進行驗證可以極大地增強用戶對于應用程序的理解。不幸的是,Commons Validator 并沒有對此提供支持。假設希望 HTML 文件設置文本域的 maxlength 屬性來與驗證匹配,或者在文本域之后放上一個百分號(%)來表示要輸入百分比的值。通常,這些信息都被硬編寫到 HTML 文檔中了。如果決定修改 name 屬性來支持 75 個字符,而不是 60 個字符,那么需要改動多少地方呢?在很多應用程序中,通常都需要:
◆更新 DDL 來增大數據庫列的長度(通過 HibernateDoclet、 hbm.xml 或 Hibernate Annotations)。
◆更新 Commons Validator XML 文件將***值增加到 75。
◆更新所有與這個域有關的 HTML 表單,以修改 maxlength 屬性。

更好的方法是使用 Hibernate Validator。驗證的定義都被通過注釋 添加到了模型層中,同時還有對所包含的驗證處理的支持。如果選擇充分利用所有的 Hibernate,這個 Validator 就可以在 DAO 和 DBMS 層也提供驗證。在下面給出的樣例代碼中,將使用 reflection 和 JSP 2.0 標簽文件多執行一個步驟,從而充分利用注釋 為視圖層動態生成代碼。這可以清除在視圖中使用的硬編寫的業務邏輯。

dateOfBirth 被注釋為 NotNull 和過去的日期。 Hibernate 的 DDL 生成代碼對這個列添加了一個非空約束,以及一個要求日期必須是之前日期的檢查約束。e-mail 地址也是非空的,必須匹配 e-mail 地址的格式。這會生成一個非空約束,但是不會生成匹配這種格式的檢查約束。

  1. public class Contact implements Serializable {  
  2. public static final int MAX_FIRST_NAME = 30;  
  3. public static final int MAX_MIDDLE_NAME = 1;  
  4. public static final int MAX_LAST_NAME = 30;  
  5.  
  6. private String fname;  
  7. private String mi;  
  8. private String lname;  
  9. private Date dateOfBirth;  
  10. private String emailAddress;  
  11.  
  12. private Address address;  
  13.  
  14. public Contact() {  
  15. this.address = new Address();  
  16. }  
  17.  
  18. @Valid  
  19. @Embedded  
  20. public Address getAddress() {  
  21. return address;  
  22. }  
  23.  
  24. public void setAddress(Address a) {  
  25. if (a == null) {  
  26. address = new Address();  
  27. } else {  
  28. aaddress = a;  
  29. }  
  30. }  
  31.  
  32. @NotNull  
  33. @Length(min = 1max = MAX_FIRST_NAME)  
  34. @Column(name = "fname")  
  35. public String getFirstname() {  
  36. return fname;  
  37. }  
  38.  
  39. public void setFirstname(String fname) {  
  40. this.fname = fname;  
  41. }  
  42.  
  43. @Length(min = 1max = MAX_MIDDLE_NAME)  
  44. @Column(name = "mi")  
  45. public String getMi() {  
  46. return mi;  
  47. }  
  48.  
  49. public void setMi(String mi) {  
  50. this.mi = mi;  
  51. }  
  52.  
  53. @NotNull  
  54. @Length(min = 1max = MAX_LAST_NAME)  
  55. @Column(name = "lname")  
  56. public String getLastname() {  
  57. return lname;  
  58. }  

如果需要,Hibernate DAO 實現也可以使用 Validation Annotations。所需做的是在 hibernate.cfg.xml 文件中指定基于 Hibernate 事件的驗證規則。(更多信息請參考 Hibernate Validator 的文檔;可以在 參考資料 一節中找到相關的鏈接)。如果真地希望抄近路,您可以只捕獲服務或控制器中的 InvalidStateException 異常,并循環遍歷 InvalidValue 數組。

【編輯推薦】

  1. 剖析Hibernate Extensions
  2. 介紹Hibernate Iterator方法
  3. Hibernate Session緩存經驗總結
  4. 簡單介紹Hibernate配置Proxool
  5. 淺談Hibernate outer-join參數
責任編輯:佚名 來源: IT168
相關推薦

2009-09-25 09:36:55

Hibernate核心

2009-09-28 14:54:33

Hibernate映射

2009-09-28 15:24:38

Hibernate V

2009-09-27 13:42:05

Hibernate E

2009-09-23 17:18:16

Hibernate S

2009-09-24 09:45:23

Hibernate批量

2009-09-27 10:19:11

Hibernate命名

2009-09-23 14:00:07

Hibernate連接

2009-09-22 15:22:08

Hibernate性能

2011-06-03 13:48:18

JavaScript重構

2010-06-03 13:08:51

2009-07-06 10:44:45

JSP charset

2009-09-14 15:12:40

LINQ to XML

2010-05-25 12:59:00

Subversion

2009-09-29 17:29:43

Hibernate S

2009-09-25 09:14:35

Hibernate日志

2010-05-27 10:23:01

SVN文檔

2010-06-30 16:00:01

FTP協議

2010-08-04 13:52:53

Flex事件機制

2010-06-12 14:35:46

UML對象圖
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 午夜av电影 | 成人免费视频网站在线观看 | 精品国产一区二区三区久久影院 | 婷婷一级片 | 99精品国产一区二区三区 | 久久一区二区三区免费 | 美日韩一区二区 | 欧美精品一二三 | 久久久九九九九 | 国产精品女人久久久 | 超碰在线97国产 | 在线观看成年视频 | 国产精品成人国产乱一区 | 亚洲精品乱码久久久久久按摩 | 91天堂网| 妹子干综合 | 欧美一区精品 | 日本久久精 | 精区3d动漫一品二品精区 | 国产视频导航 | 欧美福利| 最新国产视频 | 久久久久国产一级毛片高清网站 | 99久久99| 小早川怜子xxxxaⅴ在线 | 国产精品无码久久久久 | 碰碰视频 | 欧美一区二区三区在线视频 | 国产高清视频 | 亚洲 成人 在线 | www..com18午夜观看 | 久久夜色精品国产 | 国产小u女发育末成年 | 999久久久| 国产视频久久 | 日韩视频在线免费观看 | 成人午夜在线观看 | 国产乱码久久久久久一区二区 | 国产精品免费观看 | 一级片在线播放 | 日本一区二区高清视频 |