Hibernate-Extension和Middlegen-Hibernate

Hibernate-Extension和Middlegen-Hibernate

參考
Hibernate 開發指南
V1.0
作者:夏昕 xiaxin(at)gmail.com
=========Hibernate學習筆記========
構建Hibernate 基礎代碼
1、POJO
2、Hibernate 映射文件

       數據庫表通過Middlegen-Hibernate生成ORM(對象-關係型數據映射)再通過Hibernate-Extension生成POJO,對數據庫的操作就可在POJO上完成

1、首先用Middlegen-Hibernate生成ORM
       
配置目標數據庫參數
              進入MiddleGen 目錄下的/config/database 子目錄,根據我們實際採用的數據庫打開對應的配置文件,這裏我使用的是MSSQL,既打開mssql.xml ,化線部分根據自己的數據庫而定         
   
   

   

   

   


   
<property name="database.script.file"           value=""/>
   
<property name="database.driver.file"           value="${lib.dir}/jtds-1.1.jar"/>
   
<property name="database.driver"                value="net.sourceforge.jtds.jdbc.Driver"/>
   
<property name="database.url"                   value="jdbc:jtds:sqlserver://localhost:1433/tushu"/>
   <
property name="database.userid"                value="sa"
/>
   
<property name="database.password"              value="dada"/>

   
<property name="database.schema"                value="dbo"/>
   
<property name="database.catalog"               value="tushu"/>

   
<property name="jboss.datasource.mapping"       value="MS SQLSERVER"/>
   

    修改Build.xml
      修改MiddleGen 根目錄下的build.xml 文件,此文件是Middlegen-Hibernate 的Ant構建配置。Middlegen-Hibernate將根據build.xml文件中的具體參數生成數據庫表映射文件。可配置的項目包括:
  a) 目標數據庫配置文件地址
     查找關鍵字 ”!ENTITY”,得到(定義數據庫使用的xml文件)
None.gifDOCTYPE project [
None.gif
ENTITY database SYSTEM
None.gif
"file:./config/database/hsqldb.xml">

None.gif]
>
     這裏根據上面定義的數據庫,將其改爲:
DOCTYPE project [
    
ENTITY database SYSTEM "file:./config/database/mssql.xml">

]
>
   
  b) Application name
      默認的Application name,可以自定義名稱
   
 <property name="name" value="HibernateTestDada"/>


  c) 輸出目錄
<property name="build.gen-src.dir"   value="${build.dir}/gen-src"/>
修改value="${build.dir}/gen-src"使其指向我們所期望的輸出目錄,這裏我修改爲:
<property name="build.gen-src.dir"    value="D:/sample"/>

  d) 對應代碼的Package name 
<hibernate
destination
="${build.gen-src.dir}"

package
="${name}.hibernate"
genXDocletTags
="false"
genIntergratedCompositeKeys
="false"
javaTypeMapper
=
"middlegen.plugins.hibernate.HibernateJavaTypeMapper"
/>
  對生成文件的包名路徑,這裏自定義爲:
  <hibernate
            destination
="${build.gen-src.dir}"

            package
="derek.hibernate.test"
            genXDocletTags
="true"
            genIntergratedCompositeKeys
="false"
            javaTypeMapper
="middlegen.plugins.hibernate.HibernateJavaTypeMapper"
         
/>

這裏還有一個屬性genXDocletTags,如果設置爲true,則生成的代碼將包含xdoclet tag,這爲以後在開發過程中藉助xdoclet進行映射調整提供了幫助。
    
其中原書作者強調如果是SQLSERVER還要刪除以下劃線內容,否則報錯找不到數據庫,但是在我測試過程中發現如果去了會報找不到數據庫的錯誤,所以我沒有刪除,並且在前面“配置目標數據庫參數”中設置了這兩個參數的屬性。
<middlegen
appname
="${name}"

prefsdir
="${src.dir}"
gui
="${gui}"
databaseurl
="${database.url}"
initialContextFactory
="${java.naming.factory.initial}"
providerURL
="${java.naming.provider.url}"
datasourceJNDIName
="${datasource.jndi.name}"
driver
="${database.driver}"
username
="${database.userid}"
password
="${database.password}"
schema
="${database.schema}"
catalog
="${database.catalog}"
>
           至此爲止,MiddleGen 已經配置完畢,在MiddleGen 根目錄下運行ant。將出現圖形窗口。生成hbm映射文件,映射文件反映了數據庫表結構。每個映射文件都對應了數據庫的一個表。

2、Hibernate Extension生成POJO
  hbm2java.bat根據映射文件生成對應的POJO
  打開tools/bin/setenv.bat 文件,根據實際情況修改
   其中遇到一個問題,原本應該在CP變量中加%CLASSPATH%,但是由於我裝過xmlspy,所以當我執行hbm2java時,提示找不到類,其中提示中出現Files/Altova/xmlspy/XMLSpyInterface.jar,但此包我並沒加,包括在%CLASSPATH%中也沒設置,但他出現了,於是我將%CLASSPATH%從CP中去除,並手工的加入%CLASSPATH%中定義的路徑,問題解決!!!
@echo off

rem 
-------------------------------------------------------------------
rem Setup environment 
for hibernate tools
rem 
-------------------------------------------------------------------

set JDBC_DRIVER=D:/HibernateTools/hibernate-extensions-2.1.3/tools/lib/jtds-1.1.jar
set HIBERNATE_HOME=D:/hibernate-2.1
set HIBERNATETOOLS_HOME=D:/HibernateTools/hibernate-extensions-2.1.3/tools
echo HIBERNATETOOLS_HOME 
set to %HIBERNATETOOLS_HOME%

if "%HIBERNATE_HOME%" == "" goto noHIBERNATEHome

set CORELIB=%HIBERNATE_HOME%/lib
set LIB=%HIBERNATETOOLS_HOME%/lib
set PROPS=%HIBERNATE_HOME%/src
set CP=%JDBC_DRIVER%;%PROPS%;%HIBERNATE_HOME%/hibernate2.jar;%CORELIB%;%CORELIB%/commons-logging-1.0.4.jar;%CORELIB%/commons-lang-1.0.1.jar;%CORELIB%/cglib-full-2.0.2.jar;%CORELIB%/dom4j-1.4.jar;%CORELIB%/odmg-3.0.jar;%CORELIB%/xml-apis.jar;%CORELIB%/xerces-2.4.0.jar;%CORELIB%/xalan-2.4.0.jar;%LIB%/jdom.jar;%CORELIB%/commons-collections-2.1.1.jar;%HIBERNATETOOLS_HOME%/hibernate-tools.jar;.;C:/j2sdk1.4.2/lib;C:/j2sdk1.4.2/lib/tools.jar;C:/j2sdk1.4.2/lib/dt.jar;


if not "%HIBERNATE_HOME%" == "" goto end

:noHIBERNATEHome
echo HIBERNATE_HOME 
is not set. Please set HIBERNATE_HOME.
goto end

:end

使用hbm2java,根據MiddleGen生成的映射文件生成Java 代碼:
打開Command Window,在tools/bin目錄下執行:
hbm2java D:/sample/derek/hibernate/test/*.xml --output=d:/sample/
即可生成對應的POJO。生成的POJO 保存在我指定的輸出目錄下(d:/sample)

-----------------------------------------------
詳細內容可見
Hibernate 開發指南
V1.0
作者:夏昕 xiaxin(at)gmail.com
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章