前幾節(jié)已經(jīng)完成了Java實(shí)體類半哟、Hbm文件以及數(shù)據(jù)庫的建立丛晌。今天小博老師帶領(lǐng)大家學(xué)習(xí)如何使用Hibernate域模型。
域模型一詞來自數(shù)據(jù)建模領(lǐng)域贺喝,也稱之為持久性類菱鸥。應(yīng)用程序域模型是ORM中的中心角色,組成映射的內(nèi)容搜变。如果這些類遵循普通Java對象(PO??JO)/ JavaBean編程模型采缚,則Hibernate的效果最好。但是挠他,這些規(guī)則都不是硬要求扳抽。Hibernate中持久化對象的屬性是沒有任何意義,可以用其他方式表達(dá)域模型(例如使用java.util.Map)。
起初贸呢,使用Hibernate的應(yīng)用程序?qū)⑹褂闷鋵S械腦ML映射文件格式來實(shí)現(xiàn)此目的镰烧。隨著JPA的來臨,大多數(shù)信息現(xiàn)在被定義為可以使用注釋(和/或標(biāo)準(zhǔn)化XML格式)在ORM / JPA提供商之間移植的方式楞陷。本章將盡可能的重點(diǎn)介紹JPA映射怔鳖。對于JPA不支持的Hibernate映射功能,我們更喜歡使用Hibernate擴(kuò)展注釋固蛾。
Hibernate了解java和jdbc應(yīng)用數(shù)據(jù)表示结执。從數(shù)據(jù)庫讀取/寫入數(shù)據(jù)的能力是Hibernate類型的函數(shù)。對org.hibernate.type.type接口的實(shí)現(xiàn)艾凯,Hibernate類型的java類的方法描述,如檢查相等献幔、克隆值等。
為了幫助了解類型分類趾诗,我們來看一下我們希望映射的簡單表格和域模型蜡感。
值類型是一條不定義其自身生命周期的數(shù)據(jù)。實(shí)際上恃泪,它由一個實(shí)體擁有郑兴,該實(shí)體定義其生命周期。
另一種方式贝乎,實(shí)體的所有狀態(tài)完全由值類型組成情连。這些狀態(tài)字段或JavaBean屬性稱為持久屬性。 Contact類的持久屬性是值類型糕非。
價(jià)值類型進(jìn)一步分為三個子類別:
ü基本類型
在映射“聯(lián)系人”表中蒙具,名稱以外的所有屬性都將是基本類型⌒喾剩基本類型在基本類型章節(jié)中詳細(xì)討論禁筏。
ü可嵌入類型
name屬性是可嵌入類型的示例,在Embeddable Types章節(jié)中將詳細(xì)介紹衡招。
ü集合類型
雖然在上述示例中沒有特征篱昔,但是集合類型在價(jià)值類型中也是不同的類別。集合類型在集合中進(jìn)一步討論始腾。