1. 程式人生 > >eclipse 通過Hibernate 逆向生成實體類和對映檔案

eclipse 通過Hibernate 逆向生成實體類和對映檔案

做專案必然要先進行資料庫表設計,然後根據資料庫設計建立實體類(VO),這是理所當然的,但是到公司裡做專案後,讓我認識到,沒有說既進行完資料庫設計後還要再“自己”建立一變VO。意思是,在專案設計時,要麼根據需求分析建立實體類,由正向生成資料庫表;要麼就先進行資料庫表設計,再逆向生成實體類。沒有說進行完任意一方的設計後再去花時間去自己匹配建立另一方的設計。

原因是:

1. 1.5倍工作量,浪費時間。(時間對公司來說很重要)

2. 無法保證兩邊對映一致。因為兩邊都是自己設計的,那麼就需要人為保證對映關係統一,會有隱患。

3. 開發、維護上都不利。因為如果任意一方因某些原因需要改用,那麼經常要兩邊都要改,這樣的話對映不一致的可能性不僅更大,而且效率低下。而如果利用正逆向工程的話,則很容易解決。

所以,因專案原因我便研究了下由資料庫逆向生成hibernate實體類的方法。

在Myeclipse中,正逆向工程操作比較簡單,而如果是eclipse的話,會比較麻煩,因為必須要先配置下Hibernate環境(同理如果要生成其他持久化層框架的實體類,也需要先配置)。

有關eclipse配置Hibernate環境的方法這裡就不敘述了,上網搜吧,我給提供個參考連結:

那麼下面講述正題:如何從資料庫逆向生成Hibernate實體類

1. 首先,要在eclipse中採用自帶的資料庫管理器(Data Management),連通你的資料庫:

 

然後選擇資料庫,這裡用的Oracle,然後給個名字,如MyOracle。

點選下圖中按鈕,新建一個數據庫驅動的配置。

選擇資料庫版本,這裡是oracle 10g版本,可以為該配置另起個名字。

然後選擇相應資料庫版本的jar包。

下面就是依據自身情況填寫資料庫連線配置了。

接下來,完善Properties下的General選項卡內容,同樣是連線資料庫的資訊,配置完後點擊Test Connection按鈕測試是否能連通資料庫。

然後點選Next,再確認無誤後,單擊Finish。

之後Data Management就會出現MyOracle的資料庫資源管理器,發生變化如下說明資料庫配置成功。

2. 生成hibernate實體類

開啟Hibernate Configurations視窗。

然後在開啟視窗右擊,點選Add Configuration…

Project選擇專案(test),Database connection選擇剛剛配好的MyOracle(其實可以直接選擇[Hibernate configured connection]通過Hibernate配置檔案連線資料庫,但是通過這種方式並不一定能成功,單獨採用Data Management也同樣不一定成功,原因不是很清楚,所以最後採用Data Management + Hibernate配置檔案的結合方式,這樣就比較保險啦

在專案(test)內任意位置新建Hibernate的相關配置檔案(hibernate.properties和hibernate.cfg.xml)。

新建hibernate.properties:

新建hibernate.cfg.xml:

返回Edit Configuration窗體後,選擇Common選項卡中Encoding選擇UTF-8,其他預設即可,點選OK按鈕

這樣Hibernate Configuration就添加了一個配置資訊,如下圖

在eclipse選單欄中的工具欄的空白處右擊滑鼠,選擇Customize Perspective

彈出如下窗體後,依照圖中選擇Command Groups Availability選項卡,勾選Hibernate Code Generation,然後單擊確定。

之後工具欄就會出現相應按鈕。

單擊該按鈕,並選擇圖中Hibernate Code Generation Configurations

然後彈出如下該視窗,按如下圖操作,右擊後選擇New

彈出如下窗體,選擇輸出的專案地址,填寫包名,勾選Reverse engineer from JDBC Connection,然後建立hibernate.reveng.xml

建立hibernate.reveng.xml:

Console configuration選擇剛剛配置好的hibernate,點選Refresh按鈕,就會出現資料庫的全部schema,找到你的資料庫,然後將其Include到右側窗口裡,然後點選Finish按鈕完成hibernate.reveng.xml的建立。

返回後選擇Exporters選項卡,勾選Domain code和Hibernate XML Mappings,然後點選Run按鈕

最終生成效果如下: