自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Hibernate Annotations維護(hù)驗(yàn)證邏輯

開(kāi)發(fā) 后端
本文將向您介紹如何使用Hibernate Annotations 的 Validator 組件在 Web 應(yīng)用程序中輕松構(gòu)建并維護(hù)驗(yàn)證邏輯。

Hibernate有很多值得學(xué)習(xí)的地方,這里我們主要介紹Hibernate Annotations,包括介紹HibernateDoclet等方面。

盡管在 Web 應(yīng)用程序中盡可能多的層次中構(gòu)建數(shù)據(jù)驗(yàn)證非常重要,但是這樣做卻非常耗時(shí),以至于很多開(kāi)發(fā)人員都會(huì)干脆忽略這個(gè)步驟 —— 這可能會(huì)導(dǎo)致今后大量問(wèn)題的產(chǎn)生。但是隨著***版本的 Java 平臺(tái)中引入了注釋,驗(yàn)證變得簡(jiǎn)單得多了。本文將向您介紹如何使用Hibernate Annotations 的 Validator 組件在 Web 應(yīng)用程序中輕松構(gòu)建并維護(hù)驗(yàn)證邏輯。

有時(shí)會(huì)有一種工具,它可以真正滿足開(kāi)發(fā)人員和架構(gòu)師的需求。開(kāi)發(fā)人員在***次下載這種工具當(dāng)天就可以在自己的應(yīng)用程序中開(kāi)始使用這種工具。理論上來(lái)說(shuō),這種工具在開(kāi)發(fā)人員花費(fèi)大量時(shí)間來(lái)掌握其用法之前就可以從中獲益。架構(gòu)師也很喜歡這種工具,因?yàn)樗梢詫㈤_(kāi)發(fā)人員導(dǎo)向更高理論層次的實(shí)現(xiàn)。Hibernate Annotations 的 Validator 組件就是一種這樣的工具。

Java SE 5 為 Java 語(yǔ)言提供了很多需要的增強(qiáng)功能,不過(guò)其他增強(qiáng)功能可能都不如 注釋 這樣潛力巨大。使用 注釋,我們就終于具有了一個(gè)標(biāo)準(zhǔn)、一級(jí)的元數(shù)據(jù)框架為 Java 類使用。Hibernate 用戶手工編寫(xiě) *.hbm.xml 文件已經(jīng)很多年了(或者使用 XDoclet 來(lái)自動(dòng)實(shí)現(xiàn)這個(gè)任務(wù))。如果手工創(chuàng)建了 XML 文件,那就必須對(duì)每個(gè)所需要的持久屬性都更新這兩個(gè)文件(類定義和 XML 映射文檔)。使用 HibernateDoclet 可以簡(jiǎn)化這個(gè)過(guò)程,但是這需要我們確認(rèn)自己的 HibernateDoclet 版本支持要使用的 Hibernate 的版本。doclet 信息在運(yùn)行時(shí)也是不可用的,因?yàn)樗痪帉?xiě)到了 Javadoc 風(fēng)格的注釋中了。Hibernate Annotations通過(guò)提供一個(gè)標(biāo)準(zhǔn)、簡(jiǎn)明的映射類的方法和所添加的運(yùn)行時(shí)可用性來(lái)對(duì)這些方式進(jìn)行改進(jìn)。

使用 HibernateDoclet 的 Hibernate 映射代碼

  1. /**  
  2. * @hibernate.property column="NAME" length="60" not-null="true" 
  3. */  
  4. public String getName() {  
  5. return this.name;  
  6. }  
  7.  
  8. /**  
  9. * @hibernate.many-to-one column="AGENT_ID" not-null="true" cascade="none"   
  10. *outer-join="false" lazy="true" 
  11. */  
  12. public Agent getAgent() {  
  13. return agent;  
  14. }  
  15. /**  
  16. * @hibernate.set lazy="true" inverse="true" cascade="all" table="DEPARTMENT"   
  17. * @hibernate.collection-one-to-many class="com.triview.model.Department" 
  18. * @hibernate.collection-key column="DEPARTMENT_ID" not-null="true" 
  19. */  
  20. public List<Department> getDepartment() {  
  21. return department;  
  22. }  

使用 Hibernate Annotations 的 Hibernate 映射代碼

  1. @NotNull  
  2. @Column(name = "name")  
  3. @Length(min = 1max = NAME_LENGTH)   
  4. // NAME_LENGTH is a constant declared elsewhere  
  5. public String getName() {  
  6. return name;  
  7. }  
  8.  
  9. @NotNull  
  10. @ManyToOne(cascade = {CascadeType.MERGE }, fetch = FetchType.LAZY)  
  11. @JoinColumn(name = "agent_id")  
  12. public Agent getAgent() {  
  13. return agent;  
  14. }  
  15.  
  16. @OneToMany(mappedBy = "customer"fetch = FetchType.LAZY)  
  17. public List<Department> getDepartment() {  
  18. return department;  
  19. }  

如果使用 HibernateDoclet,那么直到生成 XML 文件或運(yùn)行時(shí)才能捕獲錯(cuò)誤。使用 注釋,在編譯時(shí)就可以檢測(cè)出很多錯(cuò)誤;或者如果在編輯時(shí)使用了很好的 IDE,那么在編輯時(shí)就可以檢測(cè)出部分錯(cuò)誤。在從頭創(chuàng)建應(yīng)用程序時(shí),可以利用 hbm2ddl 工具為自己的數(shù)據(jù)庫(kù)從 hbm.xml 文件中生成 DDL。一些重要的信息 —— 比如name 屬性的***長(zhǎng)度必須是 60 個(gè)字符,或者 DDL 應(yīng)該添加非空約束 —— 都被從 HibernateDoclet 項(xiàng)添加到 DDL 中。當(dāng)使用注釋時(shí),我們可以以類似的方式自動(dòng)生成 DDL。

【編輯推薦】

  1. 剖析Hibernate Extensions
  2. 介紹Hibernate Iterator方法
  3. Hibernate Session緩存經(jīng)驗(yàn)總結(jié)
  4. 簡(jiǎn)單介紹Hibernate配置Proxool
  5. 淺談Hibernate outer-join參數(shù)
責(zé)任編輯:佚名 來(lái)源: IT168
相關(guān)推薦

2009-09-28 17:27:27

Hibernate A

2009-09-29 10:12:03

Hibernate A

2009-09-27 17:07:04

Hibernate J

2009-06-03 16:27:27

Hibernate一對(duì)一關(guān)系

2015-07-08 16:25:53

Xcodenullability

2012-02-08 14:24:35

HibernateJava

2021-08-03 10:18:22

物聯(lián)網(wǎng)預(yù)測(cè)性維護(hù)規(guī)范性維護(hù)

2009-06-18 10:41:18

Hibernate3.Hibernate3.

2009-06-18 11:43:40

Hibernate uHibernate s

2009-09-28 14:49:44

Hiberante映射

2015-06-11 15:17:56

2009-06-02 14:46:26

Hibernate關(guān)系映射教程

2022-02-27 10:13:42

分包Uiniapp項(xiàng)目

2012-02-08 11:15:38

HibernateJava

2015-09-01 13:53:53

IT維護(hù)

2009-12-29 14:58:05

ADSL設(shè)備維護(hù)

2009-09-23 17:05:52

Hibernate S

2009-09-23 16:39:51

Hibernate s

2009-09-24 16:53:47

Hibernate A

2009-09-27 16:51:40

Hibernate U
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)