Hibernate配置入門(mén)手冊(cè)
當(dāng)我們有了一個(gè)持久化類(lèi)和它的映射文件時(shí),就該是Hibernate配置的時(shí)候了。
在此之前,我們需要一個(gè)數(shù)據(jù)庫(kù)。 HSQL DB是種基于Java 的SQL數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS),可以從HSQL DB的網(wǎng)站上下載。實(shí)際上,你只需下載的包中的hsqldb.jar文件,并把這個(gè)文件放在開(kāi)發(fā)文件夾的lib/目錄下即可。
在開(kāi)發(fā)的根目錄下創(chuàng)建一個(gè)data目錄 - 這是HSQL DB存儲(chǔ)數(shù)據(jù)文件的地方。此時(shí)在data目錄中運(yùn)行java -classpath ../lib/hsqldb.jar org.hsqldb.Server就可啟動(dòng)數(shù)據(jù)庫(kù)。你可以在log中看到它的啟動(dòng),及綁定到TCP/IP套結(jié)字,這正是我們的應(yīng)用程序稍后會(huì)連接的地方。如果你希望在本例中運(yùn)行一個(gè)全新的數(shù)據(jù)庫(kù),就在窗口中按下CTRL + C來(lái)關(guān)閉HSQL數(shù)據(jù)庫(kù),并刪除data/目錄下的所有文件,再重新啟動(dòng)HSQL數(shù)據(jù)庫(kù)。
Hibernate是你的應(yīng)用程序里連接數(shù)據(jù)庫(kù)的那層,所以它需要連接用的信息。連接(connection)是通過(guò)一個(gè)也由我們配置的JDBC連接池(connection pool)來(lái)完成的。Hibernate的發(fā)布包里包含了許多開(kāi)源的(open source)連接池,但在我們例子中使用Hibernate內(nèi)置的連接池。注意,如果你希望使用一個(gè)產(chǎn)品級(jí)(production-quality)的第三方連接池軟件,你必須拷貝所需的庫(kù)文件到你的classpath下,并使用不同的連接池設(shè)置。
為了保存Hibernate配置,我們可以使用一個(gè)簡(jiǎn)單的hibernate.properties文件,或者一個(gè)稍微復(fù)雜的hibernate.cfg.xml,甚至可以完全使用程序來(lái)Hibernate配置。多數(shù)用戶(hù)更喜歡使用XML配置文件:
- xml version='1.0' encoding='utf-8'?>
- "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
- <hibernate-configuration>
- <session-factory>
- <property name="connection.driver_class">org.hsqldb.jdbcDriver< SPAN>property>
- <property name="connection.url">jdbc:hsqldb:hsql://localhost< SPAN>property>
- <property name="connection.username">sa< SPAN>property>
- <property name="connection.password">< SPAN>property>
- <property name="connection.pool_size">1< SPAN>property>
- <property name="dialect">org.hibernate.dialect.HSQLDialect< SPAN>property>
- <property name="current_session_context_class">thread< SPAN>property>
- <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider< SPAN>property>
- <property name="show_sql">true< SPAN>property>
- <property name="hbm2ddl.auto">create< SPAN>property>
- <mapping resource="events/Event.hbm.xml"/>
- < SPAN>session-factory>
- < SPAN>hibernate-configuration>
注意這個(gè)XML配置使用了一個(gè)不同的DTD。在這里,我們配置了Hibernate的SessionFactory-一個(gè)關(guān)聯(lián)于特定數(shù)據(jù)庫(kù)全局的工廠(factory)。如果你要使用多個(gè)數(shù)據(jù)庫(kù),就要用多個(gè)的
最開(kāi)始的4個(gè)property元素包含必要的JDBC連接信息。方言(dialect)的property元素指明Hibernate 生成的特定SQL變量。你很快會(huì)看到,Hibernate對(duì)持久化上下文的自動(dòng)session管理就會(huì)派上用場(chǎng)。 打開(kāi)hbm2ddl.auto選項(xiàng)將自動(dòng)生成數(shù)據(jù)庫(kù)模式(schema)- 直接加入數(shù)據(jù)庫(kù)中。當(dāng)然這個(gè)選項(xiàng)也可以被關(guān)閉(通過(guò)去除這個(gè)配置選項(xiàng))或者通過(guò)Ant任務(wù)SchemaExport的幫助來(lái)把數(shù)據(jù)庫(kù)schema重定向到文件中。最后,在配置中為持久化類(lèi)加入映射文件。
把這個(gè)文件拷貝到源代碼目錄下面,這樣它就位于classpath的根目錄的最后。Hibernate配置在啟動(dòng)時(shí)會(huì)自動(dòng)在classpath的根目錄查找名為hibernate.cfg.xml的配置文件。
【編輯推薦】