要讓Hibernate能夠work的最基本條件,就是需要有底下三種東西
1.Configuration File (hibernate.cfg.xml)
2.Mapping File (*.hbm.xml) ->hibernate 3.x 可以直接使用Annotation在DTO 中描述即可
3.DTO
依照下列的操作方式,一步一步即可 (注意 : 這裡亦不介紹hibernate plugin的安裝,之後的文章中再介紹)
步驟1:注意,這裡要選擇Others(圖片抓的不好)
步驟2 : 選擇 Hibernate Configuration File (cfg.xml),點選Next
步驟3 選擇檔案的存放路徑 ,點選Next
步驟5:請注意Project選擇的是正確的Project Name,點選Finish
步驟6:產生底下的 hibernate.cfg.xml檔
步驟7:先執行步驟1,然後底下選擇Hibernate reverse Engineering file (reveng.xml),點選Next
步驟9:於Console configureationi中,請確定選擇的是正確的Project Name,這裡會去吃剛剛所產生的hibernate.cfg.xml檔,然後點選Refresh按鈕,於Database Schema中,會出現於hibernate.cfg.xml中定義的資料庫的資訊
步驟10:這裡只使用Employees資料表作示範,所以於Database Schema的樹狀節點中,選擇Employee節點,然後點選按鈕include,點選Finish
步驟11:產生底下檔案
步驟12: 使用Hibernate Code Generation Configurations工具,產生*.hbm.xml及DTO檔
步驟13:確認 Console configuration中選擇的Project Name,Output directory所指定的產生路徑,定義Package Name,最重要的是記得指定步驟7~11中所產生的reveng.xml檔
步驟14:確認Exporters標籤設定如下
步驟15:確定Common標籤設定如下,點選Run按鈕
步驟16:產生檔案如圖所示(com.Northwnd.model.employees,com.Northwnd.model.EmployeesHome, Employees.hbm.xml)
步驟17:於hibernate.cfg.xml中加入Employees.hbm.xml的mapping定義如下
步驟18:新增一個com.xxx.Main.java檔,並撰寫程式碼如下
package com.xxx; import java.util.List; import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import com.Northwnd.model.Employees;; public class Main { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Configuration cfg = new Configuration(); cfg.configure(); SessionFactory factory = cfg.buildSessionFactory(); Session session = factory.openSession(); Transaction tx = null; try { tx = session.beginTransaction(); //query Query query = session.createQuery("from com.Northwnd.model.Employees"); Listlist = (List )query.list(); System.out.println("Count:"+list.size()); for(int i = 0; i < list.size();i++) { System.out.println(i + ":" +list.get(i).getFirstName() + " " + list.get(i).getLastName()); } tx.commit(); }catch(HibernateException ex) { if(tx != null) tx.rollback(); System.out.println(ex.getMessage()); } finally { session.close(); factory.close(); } } }
執行結果:
結論:
其實上面有幾個步驟需要些為調整,我不知道是不是因為hibernate plugin跟MS SQL不合,但這裡就先不描述,我想懂hibernate原理的人,就算code gen產生的檔案錯誤,應該也是有能力修改。本文章是為了介紹如何使用工具,來快速產生hibernate的相關程式碼,加速系統開發的效率。但這裡也不免要小小抱怨一下,雖然說是免費的工具,這要做一樣的效果,使用.NET的IDE,卻可以在一分鐘內做出一樣的結果,使用Hibernate的Eclipse plugin,花了十幾分鐘,但這是第一次,不過我想之後就算再熟練,速度都不可能比VS快,希望Java的Tool能趕快加油。
沒有留言:
張貼留言