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

創(chuàng)新互聯(lián)建站是一家專注于網(wǎng)站建設(shè)、成都網(wǎng)站制作與策劃設(shè)計(jì),城中網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)建站做網(wǎng)站,專注于網(wǎng)站建設(shè)十載,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:城中等地區(qū)。城中做網(wǎng)站價(jià)格咨詢:13518219792
盡管在 Web 應(yīng)用程序中盡可能多的層次中構(gòu)建數(shù)據(jù)驗(yàn)證非常重要,但是這樣做卻非常耗時(shí),以至于很多開發(fā)人員都會干脆忽略這個步驟 —— 這可能會導(dǎo)致今后大量問題的產(chǎn)生。但是隨著***版本的 Java 平臺中引入了注釋,驗(yàn)證變得簡單得多了。本文將向您介紹如何使用Hibernate Annotations 的 Validator 組件在 Web 應(yīng)用程序中輕松構(gòu)建并維護(hù)驗(yàn)證邏輯。
有時(shí)會有一種工具,它可以真正滿足開發(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)功能可能都不如 注釋 這樣潛力巨大。使用 注釋,我們就終于具有了一個標(biāo)準(zhǔn)、一級的元數(shù)據(jù)框架為 Java 類使用。Hibernate 用戶手工編寫 *.hbm.xml 文件已經(jīng)很多年了(或者使用 XDoclet 來自動實(shí)現(xiàn)這個任務(wù))。如果手工創(chuàng)建了 XML 文件,那就必須對每個所需要的持久屬性都更新這兩個文件(類定義和 XML 映射文檔)。使用 HibernateDoclet 可以簡化這個過程,但是這需要我們確認(rèn)自己的 HibernateDoclet 版本支持要使用的 Hibernate 的版本。doclet 信息在運(yùn)行時(shí)也是不可用的,因?yàn)樗痪帉懙搅?Javadoc 風(fēng)格的注釋中了。Hibernate Annotations通過提供一個標(biāo)準(zhǔn)、簡明的映射類的方法和所添加的運(yùn)行時(shí)可用性來對這些方式進(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
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
getDepartment() { - return department;
- }
如果使用 HibernateDoclet,那么直到生成 XML 文件或運(yùn)行時(shí)才能捕獲錯誤。使用 注釋,在編譯時(shí)就可以檢測出很多錯誤;或者如果在編輯時(shí)使用了很好的 IDE,那么在編輯時(shí)就可以檢測出部分錯誤。在從頭創(chuàng)建應(yīng)用程序時(shí),可以利用 hbm2ddl 工具為自己的數(shù)據(jù)庫從 hbm.xml 文件中生成 DDL。一些重要的信息 —— 比如name 屬性的***長度必須是 60 個字符,或者 DDL 應(yīng)該添加非空約束 —— 都被從 HibernateDoclet 項(xiàng)添加到 DDL 中。當(dāng)使用注釋時(shí),我們可以以類似的方式自動生成 DDL。
名稱欄目:HibernateAnnotations維護(hù)驗(yàn)證邏輯
分享地址:http://fisionsoft.com.cn/article/cohdgid.html


咨詢
建站咨詢
