背景:工作中使用Hibernate進行持久化的開發工作,所以有必要詳細了解這方面的知識。
ps:這里有個問題就是刷新表的時候速度太慢了。還不如自己手動去創建。如果表太多倒是可以采取批量生成的策略。
在項目開發時,要么先完成數據庫表的設計,再逆向生成實體類或者根據需求分析建立實體類,有正向生成數據庫表。沒有人會浪費大量的時間在進行完任意一方時自己匹配建立另一方設計,這樣做還可能導致兩邊映射不一致,對開發和維護都不利。廢話不多說,現在開始實現由數據庫逆向生成Hibernate實體類的方法。
1 Eclipse配置Hibernate環境
(1)HibernateTools下載地址:http://download.csdn.net/detail/b671900/7884405
(2)解壓后將features和plugins這兩個文件夾拷貝到我們事先建好的文件夾eclipse-jee-luna-R\MyPlugins\HibernateTools\下面。如下圖所示
:
(3)在eclipse目錄新建目錄links(如果已經存在就不需要在創建了),在該目錄下新建文件hibernate.link,內容為:path=D:/eclipse-jee-luna-R/MyPlugins/Hibernatetools
(4)重新啟動Eclipse,在文件(file)-->新建(new)-->其它(other)中如果看到hibernate的配置項就證明已經安裝成功,如下圖:
2 創建項目生成映射文件和持久化類
(1)新建一個項目hibernateTools,並將數據庫驅動拷貝到lib目錄下,項目的目錄結構如下:
ps:這里我根據需要使用oracle的jar包。這里可以隨意建一個工程,或者使用系統工程,只要jar包存在即可。jar包主要是用來配置數據庫相關驅動,連接數據庫用
2.1 打開Hibernate Perspective視圖層
在Eclipse中打開“Hibernate Perspective“。
選擇“Windows” >> “Open Perspective” >> “Others…” , 選擇 “Hibernate“。
此時在工作窗口會看到一個Hibernate Configurations窗口。
2.2 新建Hibernate Configuration 配置
1.在Hibernate Configurations窗口中, 右鍵,選 “Add Configuration…”,彈出對話框 Edit Configuration窗口。如下圖所示
2.在 “Project”區域, 單擊 “Browse..” 選擇你自己的項目。(根據具體情況作出判斷)
3.在 “Database Connection” 區域, 單擊 “New..”創建你自己的數據庫設定。
ps:這一步比較重要。用來配置數據庫驅動,數據庫連接串。后面的4 5 6步都是做這個操作的
4.彈出Connection Profile中選Oracle ,並填寫“Name”后,Next。Name為數據庫節點的名稱,含有數據源的信息
5.在彈出對話框中,選Driver,沒有的話要新加,此處新加Driver。
6.彈出對話框New Driver Definition。用來配置數據庫驅動
ps:在Name/Type中中選一個driver templates,如果出現“Unable to locate JAR/zip in file system as specified by the driver definition: ojdbc14.jar.”
就要在“JAR List”選項卡中刪除原有的驅動文件,重新加一下就好了。
ps:這里的Driver name 自己命名,后面可以直接選取
刪除驅動文件重新添加,此處添加的是Maven倉庫中的jar包
完成后點擊OK
實際操作:進行數據庫驅動的相關配置ps:此處要配置前邊的jar包路徑。自己建立一個jdbc的驅動器並命名。
數據庫驅動配置好以后,填寫數據庫的相關連接,可以點Test Connection測試是否可以連接上。
連接上如圖
7.Configuration file配置
ps:下面的Database connections選項選擇第6步中配置好的連接名稱。如下所示
點擊“Setup”彈出“Setup configuration file”對話框,如果不存在.dfg.xml文件,可以新建
上圖點擊“Create New...”后,彈出新建cfg.xml文件對話框
創建在項目目錄下的main/java/resources下,
我的是在“maven-hibernate-demo/src/main/resources”
可以點擊next配置更具體的設置,此處我們直接Finsh。即不再配置hibernate.cfg.xml中的信息
返回前一界面后,OK。記住,此處的“Hibernate Version”選項一定要選對版本,否則反向工程不會成功。
ps:在sts中沒有Hibernate Version選項的配置
查看Hibernate Configurations視圖。
ps:點擊新建的配置,在Database目錄下可以看到我們連接的數據庫和相關的表信息,這樣就表示配置成功。數據庫刷新的過程會有點長,如下圖所示
2.3 查看src/main/resources目錄下的剛建好的hibernate.cfg.xml文件
ps:這里可以自己寫,也可以直接finish跳過
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="hibernate.connection.driver_class">oracle.jdbc.OracleDriver</property> <property name="hibernate.connection.password">password</property> <property name="hibernate.connection.url">jdbc:oracle:thin:@yourdatabaseip:gzip</property> <property name="hibernate.connection.username">username</property> <property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property> </session-factory> </hibernate-configuration>
2.4 生成Hibernate代碼
在“Hibernate Perspective”視圖中, 點擊 “Hibernate Code Generation Configuration”
在生成代碼框中,新建configuration,並填寫Main選項卡和Exporters選項卡,
Main中需要填寫輸出路徑等,填完的如下
console configuration選擇前邊剛配置完的Hibernate Configuration,前邊的名字是“hibernate”
ps:這就是前面對數據源相關的配置
Output directory選擇輸出路徑
Reverse enginner from JDBC Connection勾選
Package填寫包名
reveng.xml填寫創建hibernate.reveng.xml的位置,沒有則新建。
- console configuration:選擇在第二點中我們創建的數據庫連接。
- output directory:配置執行后輸出的目錄,生成hbm、PO類等。
- package:包名,這里請輸入PO類存放的路徑。
- reveng.xml:生成mapping和PO類的重要配置文件
ps:在創建reveng.xml時候,要點擊next,配置需要進行映射的數據庫表。
ps:此處刷新有點緩慢,選擇要進行映射的數據表即可。
在Exporters選擇相應要生成的代碼
可以生成Model , mapping file (hbm) , DAO, annotation code 等等。
點Run生成代碼
生成的代碼結構如下