???
首先要感謝我所在的
Team
意識到了傳統
JDBC
開發的種種不足,轉而開始關注
O/R Mapping
領域的成果。說到
O/R Mapping
,我認為在對象數據庫還沒有真正成熟的時候它是一個不錯的選擇,看看
SUN
的
JDO 2.0
規范吧,它的即將發布將會把這個領域推向更高的境界。再看看我們的開源社區呢,喔!發現了
Hibernate
!從現在開始,我的焦點將放在
Hibernate
上面,一個優秀的
O/R Mapping
工具。
????
在沒有正式開始旅行之前,讓我們區分幾個名詞。
POJO
:在
Hibernate
中代表包含
Seter
、
Geter
這些最基本操作的值對象。而
BO
:代表包含一些業務邏輯的值對象,它的作用域很大,也就是說
BO
在充當持久類的同時可以傳到
UI
層。
PO
:代表持久對象,是納入
Hibernate
管理框架中的,在一定程度上可以和值對象的概念互換,值對象經過
Hibernate
進行處理,就變成了
PO
。
Hibernate
配置文件:
hibernate.cfg.xml
或
hibernate.properties
,不過推薦使用
XML
格式。映射文件
*.hbm.xml
:映射文件的作用是將
POJO
與關系型數據庫數據相綁定,作為一個橋梁。另外,為數據庫中的表進行手工編寫映射文件可不是件好差事,幸好開源社區中也有一群同樣想法的人,他們開發了
hibernateSynchronizer
映射工具,可到
http://www.binamics.com/hibernatesync/eclipse2.1/
下載。
???? 好了,現在去 http://www.hibernate.org 下載 Hibernate 的開發包(目前的版本是 2.1.6 )。接著打開 Eclipse 2.1 ,在更新管理器中安裝 hibernateSynchronizer 。據說 Eclipse 3.0 已內置映射工具,不過我沒有試。安裝完畢后,新建一個 Web 應用程序 HibernateTest ,接著為這個應用程序添加 Hibernate 類庫 hibernate-2.1.6\hibernate-2.1\hibernate2.jar 及其依賴類庫、數據庫連接包,強烈建議把 hibernate-2.1.6\hibernate-2.1\lib 下的所有類庫全部加載,如下圖:
???
接著使用
hibernateSynchronizer
來生成
hibernate.cfg.xml
文件,新建——
>
其他——
>Hibernate Configuration File
,我使用的是
SQL Server
數據庫,各項配置參數見下圖:
???
?????生成出來的
hibernate.cfg.xml
文件:
???
??? 在項目的 src 目錄下新建四個包,分別是 bo 、 bo.base 、 bo.mapping 、 com.dao ,具體什么作用,到時候他們都會一一呈獻。在開始映射文件前還要做一件事,為應用程序 HibernateTest 配置 hibernateSynchronizer ,我更喜歡自己寫 DAO ,所以沒有配置 Data Access Objects ,其他各項參數如下圖:
?
????? 被映射的表
AutoInfo
結構如下,
id
為其主鍵:
?????????????????
???
新建——
>
其他——
>Hibernate Mapping File
,配置好參數再“
Refresh
”后,選擇要映射的表,注意千萬不要在
800*600
下映射文件!否則有些按鈕不會出現,各項配置參數見下圖:
???
?????? 終于、終于,映射文件
AutoInfo.hbm.xml
終于出來了!
??? <?xml version="1.0"?>
<hibernate-mapping package="bo.base">
<!DOCTYPE hibernate-mapping PUBLIC
?"-//Hibernate/Hibernate Mapping DTD//EN"
?"
http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd
" >
?<class name="AutoInfo" table="AutoInfo">
??<property
???column="owner_dept"
???length="500"
???name="OwnerDept"
???not-null="false"
???type="string"
?? />
??<property
???column="license_plate"
???length="50"
???name="LicensePlate"
???not-null="false"
???type="string"
?? />
??<property
???column="owner"
???length="50"
???name="Owner"
???not-null="false"
???type="string"
?? />
??<property
???column="owner_adderss"
???length="1000"
???name="OwnerAdderss"
???not-null="false"
???type="string"
?? />
??<property
???column="id"
???length="18"
???name="Id"
???not-null="true"
???type="integer"
?? />
?</class>
</hibernate-mapping>
??? 需要修改一下 AutoInfo.hbm.xml 文件為其定義主鍵,把:
????<property
???? column="id"
???? length="18"
???? name="Id"
???? not-null="true"
???? type="integer"
??? />
替換為:
????????
????<id name="Id" column="id" type="integer">
?????? <generator class="native"/>
????</id>
??? 再接再厲,為映射文件生成 POJO。修改 hibernate.cfg.xml 文件在 </session-factory> 標簽的上面加上剛才映射的文件 <mapping resource="bo/mapping/AutoInfo.hbm.xml" />。接著在“包資源管理器”中點擊 AutoInfo.hbm.xml 右鍵,Hibernate Synchronizer——>Synchronize Files。再看看 src 中的包:
???????????????
???
O/R Mapping 的旅程先到這里吧,后面的路將會越來越坎坷!你準備好了嗎?
請注意!引用、轉貼本文應注明原作者:Rosen Jiang 以及出處:http://www.aygfsteel.com/rosen