搞了兩天Hibernate,終于能夠順利地把流程跑下來(lái)了……
主要流程如下(以tomcat為例,項目主目錄為myweb):
1、安裝Hibernate。網(wǎng)上講得夠多了,就不再重復了。
2、配置XML文件。把log4j.properties、hibernate.cfg.xml(也可以用hibernate.properties,這兩個(gè)文件同時(shí)存在的時(shí).cfg.xml會(huì )覆蓋.properties)拷到myweb/WEB-INF/classes(所有的XML文件都放在這里)。
3、修改hibernate.cfg.xml,配置connection.datasource和dialect,例如:
<property name="connection.datasource">java:comp/env/link</property>
<property name="show_sql">true</property>
<property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property>
關(guān)于dialect是什么,參見(jiàn)Hibernate參考手冊。MySQL就用MySQLDialect就行了。然后把這邊放著(zhù),不要忘了順便把Tomcat里面的DataSource配置好.
4、我的習慣是先把數據庫建立起來(lái),然后生成.hbm.xml和java類(lèi)。所以建立數據庫吧!暫稱(chēng)為mydb,下設兩張表:t1,t2。
注意,強烈建議要設立id字段(也就是主鍵),否則后面生成的時(shí)候.hbm.xml會(huì )有點(diǎn)“與眾不同”……
5、用Middlegen生成.hbm.xml。hibernate-middlegen的下載地址:http://sourceforge.net/project/showfiles.php?group_id=40712&package_id=84728
注意:不要用ddl2hbm,我在這上面花了一天時(shí)間都沒(méi)能把.hbm.xml建立起來(lái),慢慢推進(jìn),不同的報錯,都快瘋了……最后一個(gè)錯誤是:“建議使用class2hbm”……昏……后來(lái)才知道,ddl2hbm基本上被廢棄了,已經(jīng)不提供技術(shù)支持了。用Middlegen是個(gè)不錯的方法。
Middlegen的設置也不復雜:主要要配置兩個(gè)文件。一個(gè)是要使用的數據庫配置XML,位于middlegen\config\database,文件名為{數據庫}.xml,例如MySQL的配置文件就是MySQL.XML,打開(kāi)后很明了,很容易修改的。附上我的MySQL. 需要修改的項標紅了(注意把數據庫驅動(dòng)mysql-connector-java-3.1.8-bin.jar拷到相應的目錄):
<property name="database.script.file" value="${src.dir}/sql/${name}-mysql.sql"/>
<property name="database.driver.file" value="${lib.dir}/mysql-connector-java-3.1.8-bin.jar"/>
<property name="database.driver.classpath" value="${database.driver.file}"/>
<property name="database.driver" value="com.mysql.jdbc.Driver"/>
<property name="database.url" value="jdbc:mysql://localhost/link"/>
<property name="database.userid" value="root"/>
<property name="database.password" value=""/>
<property name="database.schema" value=""/>
<property name="database.catalog" value=""/>
<property name="jboss.datasource.mapping" value="mySQL"/>
另一個(gè)是Middlegen主目錄下的build.xml。修改的主要是:
(1)第24行左右的數據庫連接,將默認的改為mysql.xml:
<!ENTITY database SYSTEM "file:./config/database/mysql.xml">
(2)第33行左右的name。這里的name基本上就是將來(lái)要連接的表對應類(lèi)文件所屬類(lèi)的上兩級。例如表對應類(lèi)的包為myweb.elements,則name就是myweb。
<property name="name" value="myweb"/>
(3)第184行左右的
<hibernate
destination="${build.gen-src.dir}"
package="${name}.Hibernate"
genXDocletTags="false"
genIntergratedCompositeKeys="false"
javaTypeMapper="middlegen.plugins.hibernate.HibernateJavaTypeMapper"
/>
可以將package="${name}.Hibernate"改為"${name}.elements"(個(gè)人習慣)。這個(gè)package就是所有表對應類(lèi)所在的package。也可以改為絕對值,如myweb.elements。
至于genXDocletTags,在設置為true的情況下,xml文件帶上了XDoclet的標簽,可以用XDoclet生成對應類(lèi)。我們下面使用的是Hibernate自帶的hbm2java,所以不必要。但是設為true也沒(méi)有關(guān)系。
其余可以不修改。
然后在Middlegen主目錄下運行ant就行了(沒(méi)有的話(huà)去http://ant.apache.org/下一個(gè)就行了,版本要在1.5以上)。一切順利地話(huà)就會(huì )出現Middlegen的GUI了。
操作很一目了然,還可以設置one-to-many之類(lèi)的映射關(guān)系。比ddl2hbm好得多。完成后按左上角的“Generate”就行了。生成文件在使用默認設置時(shí)會(huì )放在middlegen\build\gen-src下面。打開(kāi)檢查一下沒(méi)有問(wèn)題就可以繼續了。
6、把XML映射文件都拷到myweb/WEB-INF/classes。修改hibernate.cfg.xml,加入XML映射文件的映射。直接加在<!-- Mapping files -->的下面即可,最終hibernate.cfg.xml為:
<?xml version=‘1.0‘ encoding=‘utf-8‘?>
<!DOCTYPE hibernate-configuration
PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- database -->
<property name="connection.datasource">java:comp/env/link</property>
<property name="show_sql">true</property>
<property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property>
<!-- Mapping files -->
<mapping resource="t1.hbm.xml"/>
<mapping resource="t2.hbm.xml"/>
</session-factory>
</hibernate-configuration>
7、使用hbm2java生成對應類(lèi)文件。
首先要配置好setenv.bat。
特別注意設置類(lèi)路徑的時(shí)候,目前hibernate的版本和這個(gè)tools發(fā)布時(shí)版本不一樣,很多類(lèi)文件名都已經(jīng)改了,注意比對一下,修改過(guò)來(lái)。然后把HIBERNATE_HOME、HIBERNATETOOLS_HOME、JDBC_DRIVER、CORELIB、LIB設置好就可以了。除了以上5個(gè)路徑和類(lèi)路徑以外的都可以刪掉。試著(zhù)在命令行模式下運行一下hbm2java,如果報告Nothing to do,就一切正常了。
然后,把生成的XML映射文件都拷到hibernate\tools\bin下。運行:
hbm2java *.hbm.xml
hbm2java生成完成以后,可以在generated目錄下找到按目錄存放好的類(lèi)源文件,目錄是每個(gè).hbm.xml文件中<CLASS>中的類(lèi)名規定的。最后將文件拷到相應目錄。
8、寫(xiě)個(gè)測試類(lèi)測試一下是否正常,正常的話(huà)就一切完成了。
如果在配置文件中有什么問(wèn)題,建議查看HIbernate參考手冊,雖然不是很全面,但是應該也很有些幫助。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請
點(diǎn)擊舉報。