溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

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

發(fā)布時(shí)間:2021-06-18 10:44:25 來源:億速云 閱讀:100 作者:chen 欄目:編程語言

這篇文章主要介紹“用Hibernate Annotations維護(hù)驗(yàn)證邏輯”,在日常操作中,相信很多人在用Hibernate Annotations維護(hù)驗(yàn)證邏輯問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對(duì)大家解答”用Hibernate Annotations維護(hù)驗(yàn)證邏輯”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!

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

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

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

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

使用 HibernateDoclet 的 Hibernate 映射代碼

/**  * @hibernate.property column="NAME" length="60" not-null="true" */  public String getName() {  return this.name;  }   /**  * @hibernate.many-to-one column="AGENT_ID" not-null="true" cascade="none"   *outer-join="false" lazy="true" */  public Agent getAgent() {  return agent;  }  /**  * @hibernate.set lazy="true" inverse="true" cascade="all" table="DEPARTMENT"   * @hibernate.collection-one-to-many class="com.triview.model.Department" * @hibernate.collection-key column="DEPARTMENT_ID" not-null="true" */  public List<Department> getDepartment() {  return department;  }

使用 Hibernate Annotations 的 Hibernate 映射代碼

@NotNull  @Column(name = "name")  @Length(min = 1, max = NAME_LENGTH)   // NAME_LENGTH is a constant declared elsewhere  public String getName() {  return name;  }   @NotNull  @ManyToOne(cascade = {CascadeType.MERGE }, fetch = FetchType.LAZY)  @JoinColumn(name = "agent_id")  public Agent getAgent() {  return agent;  }   @OneToMany(mappedBy = "customer", fetch = FetchType.LAZY)  public List<Department> getDepartment() {  return department;  }

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

到此,關(guān)于“用Hibernate Annotations維護(hù)驗(yàn)證邏輯”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI