要讓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");
List list = (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能趕快加油。

















沒有留言:
張貼留言