### 一 .JDBC鏈接
通常你希望SessionFactory來為你創建和緩存(pool)JDBC連接. 如果你采用這種方式, 只需要如下例所示那樣,打開一個Session:?
~~~
Session session = sessions.openSession(); // open a new Session
~~~
一旦你需要進行數據訪問時, 就會從連接池(connection pool)獲得一個JDBC連接.?
為了使這種方式工作起來, 我們需要向Hibernate傳遞一些JDBC連接的屬性. 我們現在將描述JDBC連接配置中最重要的設置.?
如果你設置如下屬性,Hibernate將使用java.sql.DriverManager來獲得(和緩存)JDBC連接 :?
Hibernate JDBC屬性

但Hibernate自帶的連接池算法相當不成熟. 它只是為了讓你快些上手,并不適合用于產品系統或性能測試中。 出于最佳性能和穩定性考慮你應該使用第三方的連接池。
只需要用特定連接池的設置替換 hibernate.connection.pool_size即可。這將關閉Hibernate自帶的連接池. 例如, 你可能會想用C3P0. C3P0是一個隨Hibernate一同分發的開源的JDBC連接池, 它位于lib目錄下。?如果你設置了hibernate.c3p0.*相關的屬性, Hibernate將使用 C3P0ConnectionProvider來緩存JDBC連接. 如果你更原意使用Proxool, 請參考發 行包中的hibernate.properties并到Hibernate網站獲取更多的信息.?
###二 .可選的配置屬性
有大量屬性能用來控制Hibernate在運行期的行為. 它們都是可選的, 并擁有適當的默認值.?
Hibernate配置屬性?



###三 .SQL方言
你應當總是為你的數據庫將hibernate.dialect屬性設置成正確org.hibernate.dialect.Dialect子類. 如果你指定一種方言, Hibernate將為上面列出的一些屬性使用合理的默認值, 為你省去了手工指定它們的功夫.
Hibernate SQL方言 (`hibernate.dialect`)

###四 ?.XML配置文件
另一個配置方法是在hibernate.cfg.xml文件中指定一套完整的配置. 這個文件可以當成hibernate.properties的替代。 若兩個文件同時存在,它將覆蓋前者的屬性.?
XML配置文件被默認是放在CLASSPATH的根目錄下. 這是一個例子:?
~~~
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<!-- 以/jndi/name綁定到JNDI的SessionFactory實例 -->
<session-factory
name="java:hibernate/SessionFactory">
<!-- 屬性 -->
<property name="connection.datasource">java:/comp/env/jdbc/MyDB</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="show_sql">false</property>
<property name="transaction.factory_class">
org.hibernate.transaction.JTATransactionFactory
</property>
<property name="jta.UserTransaction">java:comp/UserTransaction</property>
<!-- 映射定義文件 -->
<mapping resource="org/hibernate/auction/Item.hbm.xml"/>
<mapping resource="org/hibernate/auction/Bid.hbm.xml"/>
<!-- 緩存設置 -->
<class-cache class="org.hibernate.auction.Item" usage="read-write"/>
<class-cache class="org.hibernate.auction.Bid" usage="read-only"/>
<collection-cache collection="org.hibernate.auction.Item.bids" usage="read-write"/>
</session-factory>
</hibernate-configuration>
~~~
如你所見, 這個方法優勢在于,在配置文件中指出了映射定義文件的名字. 一旦你需要調整Hibernate的緩存, hibernate.cfg.xml也是更方便. 注意,使用hibernate.properties還是 hibernate.cfg.xml完全是由你來決定, 除了上面提到的XML語法的優勢之外, 兩者是等價的.?
使用XML配置,使得啟動Hibernate變的異常簡單, 如下所示,一行代碼就可以搞定:
~~~
SessionFactory sf = new Configuration().configure().buildSessionFactory();
~~~
你可以使用如下代碼來添加一個不同的XML配置文件?
~~~
SessionFactory sf = new Configuration()
.configure("catdb.cfg.xml")
.buildSessionFactory();
~~~
- 前言
- [Hibernate開發之路](1)Hibernate配置
- [Hibernate開發之路](2)Hibernate問題
- [Hibernate開發之路](3)基礎配置
- [Hibernate開發之路](4)ID生成策略
- [Hibernate開發之路](5)聯合主鍵
- [設計模式實踐之路](1)單例模式
- [Java]UDP通信的簡單例子
- [Java]套接字地址InetAddress講解
- [Java開發之路](1)final關鍵字
- [Java開發之路](2)Java字符串
- [Java開發之路](3)Java常用類
- [Java開發之路](4)String、StringBuffer與StringBuilder詳解
- [Java開發之路](5)異常詳解
- [Java開發之路](6)File類的使用
- [Java開發之路](7)RandomAccessFile類詳解
- [Java開發之路](8)輸入流和輸出流
- [Java開發之路](9)對象序列化與反序列化
- [Java開發之路](10)DOM解析XML文檔
- [Java開發之路](11)SAX解析XML文檔
- [Java開發之路](12)JDOM和DOM4J解析XML文檔
- [Java開發之路](14)反射機制
- [Java開發之路](15)注解
- [Java開發之路](16)學習log4j日志
- [Java開發之路](18)關于Class.getResource和ClassLoader.getResource的路徑問題
- [Java開發之路](19)Long緩存問題
- [Java開發之路](20)try-with-resource 異常聲明
- [Java開發之路](21)Comparator與Comparable
- [Java]Java工程師成神之路
- [細說Java](1)圖說字符串的不變性
- [細說Java](2)Java中字符串為什么是不可變的
- [細說Java](3)創建字符串是使用&quot; &quot;還是構造函數?