這是最好的SessoinFactory創建和池JDBC連接你。如果你採取這種方法,很簡單,只要打開的org.hibernate.Session:
Session session = sessions.openSession(); // open a new Session
一旦你開始一個任務,需要對數據庫的訪問,將獲得一個JDBC連接池。
你可以這樣做之前,你首先需要傳遞一些JDBC連接的屬性休眠。所有的Hibernate屬性的名字和語義定義的類org.hibernate.cfg.Environment。最重要的設置JDBC連接配置概述如下。
Hibernate會獲得並池連接使用java.sql.DriverManager,如果你設置以下屬性:
Hibernate JDBC Properties
Hibernate自帶的連接池算法,但是,相當簡陋。它的目的是幫助你開始是不適合用在生產系統中,甚至是性能測試。你應該使用第三方的連接 池,以獲得最佳的性能和穩定性。只需更換hibernate.connection.pool_size的屬性連接池的具體設置。這將關閉 Hibernate自帶的連接池。例如,您可能想用C3P0。
C3P0是一個開源的JDBC連接池,隨Hibernate一同分發的lib目錄中。 Hibernate將使用其org.hibernate.connection.C3P0ConnectionProvider爲連接池,如果你設置 hibernate.c3p0。*性能。如果你想用Proxool,請參閱包裝的hibernate.properties併到Hibernate網站獲 取更多信息。
下面是一個爲C3P0的hibernate.properties樣例文件:
hibernate.connection.driver_class = org.postgresql.Driver
hibernate.connection.url = jdbc:postgresql://localhost/mydatabase
hibernate.connection.username = myuser
hibernate.connection.password = secret
hibernate.c3p0.min_size=5
hibernate.c3p0.max_size=20
hibernate.c3p0.timeout=1800
hibernate.c3p0.max_statements=50
hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
對於內部使用的應用程序服務器,你應該幾乎總是配置Hibernate獲得javax.sql.DataSource的註冊在JNDI的應用程序服務器的連接。您將需要設置以下屬性中的至少一個:
Hibernate Datasource Properties
Property name | Purpose |
---|---|
hibernate.connection.datasource | datasource JNDI name |
hibernate.jndi.url | URL of the JNDI provider (optional) |
hibernate.jndi.class | class of the JNDI InitialContextFactory (optional) |
hibernate.connection.username | database user (optional) |
hibernate.connection.password | database user password (optional) |
下面是一個應用程序服務器提供的JNDI數據源的hibernate.properties樣例文件:
hibernate.connection.datasource = java:/comp/env/jdbc/test
hibernate.transaction.factory_class = \
org.hibernate.transaction.JTATransactionFactory
hibernate.transaction.manager_lookup_class = \
org.hibernate.transaction.JBossTransactionManagerLookup
hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
從JNDI數據源獲得的JDBC連接將自動參與到容器管理的事務的應用程序服務器。 可以任意連接屬性的連接的屬性名稱由前面加上 “hibernate.connection”的。例如,你可以指定一個字符集連接屬性hibernate.connection.charSet。 你可以定義你自己的插件策略獲得JDBC連接的實現該接口org.hibernate.connection.ConnectionProvider,並 指定您的自定義實現通過hibernate.connection.provider_class屬性。