|
4.1 簡(jiǎn)單的POJO例子 我們將會(huì)在下面的章節(jié)中詳細(xì)的描述持久化類(lèi)的四個(gè)重要規(guī)則 4.1.1實(shí)現(xiàn)一個(gè)無(wú)參構(gòu)造方法 Cat 類(lèi)有一個(gè)無(wú)參的構(gòu)造方法。所以的持久化類(lèi)必須有一個(gè)默認(rèn)的構(gòu)造器(可以不是public的)因此,Hibernate可以通過(guò)反射(java.lang.reflect.Constructor.newInstance())來(lái)實(shí)例化他們。 推薦定義這個(gè)構(gòu)造器的可見(jiàn)性至少為package 以便讓運(yùn)行時(shí)代理能夠正常的工作。 4.1.2 提供一個(gè)唯一標(biāo)示屬性 注意:這個(gè)是推薦的,但是到現(xiàn)在都沒(méi)有強(qiáng)制要求。這一條將會(huì)棄用,因?yàn)樵趯?lái)的版本中將會(huì)強(qiáng)制要求提供一個(gè)唯一標(biāo)示屬性。Cat 有一個(gè)id屬性。 這個(gè)屬性對(duì)應(yīng)底層數(shù)據(jù)庫(kù)重的主鍵列。 唯一標(biāo)示的數(shù)據(jù)類(lèi)型可以是任意的“基本”數(shù)據(jù)類(lèi)型。 更多的復(fù)合主鍵參照9.4 聯(lián)合標(biāo)示主鍵。 注意:不需要在數(shù)據(jù)表中單獨(dú)為主鍵創(chuàng)建一個(gè)列, 他們只要是可以唯一的標(biāo)示這行數(shù)據(jù)在基本表中的唯一性即可。 我們推薦在持久化類(lèi)中使用命名一致的標(biāo)示屬性, 可以把它定義為一個(gè)可以為Null的類(lèi)型(例如, 非原始數(shù)據(jù)類(lèi)型) 4.1.3推薦使用非final的類(lèi)(可選) Hibernate的一個(gè)重要的特性 ,代理(懶加載),依賴(lài)于非final的或者是一些實(shí)現(xiàn)了最只定義了public方法的接口的持久化類(lèi)。你可以使用hibernate持久化一個(gè)沒(méi)有繼承任何借口的類(lèi),但是這就導(dǎo)致你不能使用延遲關(guān)聯(lián)抓取的代理,這最終會(huì)限制了你在性能調(diào)優(yōu)方面的選擇。如果要持久化一個(gè)只實(shí)現(xiàn)了一個(gè)接口部分方法的類(lèi), 你必須禁用代理生成。參考示例4.2, 4.3 Example 4.2 通過(guò)hbm.xml 禁用代理 |