1. 程式人生 > >Hibernate配置各種資料來源詳解

Hibernate配置各種資料來源詳解

Hibernate的描述檔案可以是一個properties屬性檔案,也可以是一個xml檔案。下面講一下Hibernate.cfg.xml的配置。配置格式如下:
1. 配置資料來源

在Hibernate.cfg.xml中既可以配置JDBC,也可以配置JNDI。在本小節中講述資料來源如何配置。

hibernate.cfg.xml

<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE hibernate-configuration PUBLIC
“-//Hibernate/Hibernate Configuration DTD 3.0//EN”

“http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd“>

<hibernate-configuration>

<session-factory>

<!– 各屬性的配置–>

<!—為true表示將Hibernate傳送給資料庫的sql顯示出來 –>

<property name=”show_sql”>true</property>

<!– SQL方言,這邊設定的是MySQL –>

<property name=”dialect”>net.sf.hibernate.dialect.MySQLDialect</property>


<!– 一次讀的資料庫記錄數 –>

<property name=”jdbc.fetch_size”>50</property>

<!– 設定對資料庫進行批量刪除 –>
<property name=”jdbc.batch_size”>30</property>

<!—下面為JNDI的配置 –>

<!– 資料來源的名稱 –>

<property name=”connection.datasource”>java:comp/env/jdbc/datasourcename</property>


<!– Hibernate的連線載入類 –>

<property name=”connection.provider_class”>org.hibernate.connection.DatasourceConnectionProvider
</property>


<property name=”dialect”>net.sf.hibernate.dialect.SQLServerDialect</property>

<!—對映檔案 –>

<mapping resource=”com/amigo/pojo/User.hbm.xml”/>

<mapping resource=”com/amigo/pojo/Org.hbm.xml”/>
</session-factory>
</hibernate-configuration>

2. c3p0連線池

c3p0連線池是Hibernate推薦使用的連線池,若需要使用該連線池時,需要將c3p0的jar包加入到classpath中。c3p0連線池的配置示例如下:

hibernate.cfg.xml

<?xml version=”1.0″ encoding=”UTF-8″?>

<!DOCTYPE hibernate-configuration PUBLIC

“-//Hibernate/Hibernate Configuration DTD 3.0//EN”

“http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd“>

<hibernate-configuration>

<session-factory>

<!– 顯示實際操作資料庫時的SQL –>

<property name=”show_sql”>true</property>

<!– SQL方言,這邊設定的是MySQL –>

<property name=”dialect”>net.sf.hibernate.dialect.MySQLDialect</property>

<!–驅動程式,在後續的章節中將講述mysql、sqlserver和Oracle資料庫的配置 –>

<property name=”connection.driver_class”>……</property>

<!– JDBC URL –>

<property name=”connection.url”>……</property>

<!– 資料庫使用者名稱 –>

<property name=”connection.username”>user</property>

<!– 資料庫密碼 –>

<property name=”connection.password”>pass</property>

<property name=”c3p0.min_size”>5</property>

<property name=”c3p0.max_size”>20</property>

<property name=”c3p0.timeout”>1800</property>

<property name=”c3p0.max_statements”>50</property>

<!– 物件與資料庫表格映像檔案 –>

<mapping resource=”com/amigo/pojo/User.hbm.xml”/>

<mapping resource=”com/amigo/pojo/Org.hbm.xml”/>

</session-factory>

</hibernate-configuration>

在上述配置中,Hibernate根據配置檔案生成連線,再交給c3p0管理。

3. proxool連線池

proxool跟c3p0以及dbcp不一樣,它是自己生成連線的,因此連線資訊放在proxool配置檔案中。使用它時,需要將proxool-0.8.3.jar加入到classespath中。
(關於Hibernate中配置Proxool在proxool的百度百科有詳細的介紹:http://baike.baidu.com/view/2098784.htm
配置舉例如下:

hibernate.cfg.xml

<?xml version=”1.0″ encoding=”UTF-8″?>

<!DOCTYPE hibernate-configuration PUBLIC

“-//Hibernate/Hibernate Configuration DTD 3.0//EN”

“http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd“>

<hibernate-configuration>

<session-factory>

<!– 顯示實際操作資料庫時的SQL –>

<property name=”show_sql”>true</property>

<!– SQL方言,這邊設定的是MySQL –>

<property name=”dialect”>net.sf.hibernate.dialect.MySQLDialect</property>

<!—proxool的配置 –>

<property name=”proxool.pool_alias”>pool1</property>

<property name=”proxool.xml”>ProxoolConf.xml</property>

<property name=”connection.provider_class”>net.sf.hibernate.connection.ProxoolConnectionProvider</property>

<!– 物件與資料庫表格映像檔案 –>

<mapping resource=”com/amigo/pojo/User.hbm.xml”/>

<mapping resource=”com/amigo/pojo/Org.hbm.xml”/>

</session-factory>

</hibernate-configuration>

在hibernate.cfg.xml的同目錄下編寫proxool的配置檔案:ProxoolConf.xml,該檔案的配置例項如下:

ProxoolConf.xml

<?xml version=”1.0″ encoding=”utf-8″?>
<!– the proxool configuration can be embedded within your own application’s.
Anything outside the “proxool” tag is ignored. –>
<something-else-entirely>
<proxool>
<alias>pool1</alias>
<!–proxool只能管理由自己產生的連線–>

<!– 驅動的url–>

<!– jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=GBK–>

<driver-url>… </driver-url>

<!– 驅動類,eg. com.mysql.jdbc.Driver–>

<driver-class>… </driver-class>
<driver-properties>

<!– 資料庫使用者名稱,eg. value為root–>

<property name=”user” value=”…”/>

<!– 資料庫密碼,eg. value為root–>

<property name=”password” value=”….”/>
</driver-properties>
<!– proxool自動偵察各個連線狀態的時間間隔(毫秒),偵察到空閒的連線就馬上回收,超時的銷燬–>
<house-keeping-sleep-time>90000</house-keeping-sleep-time>
<!– 指因未有空閒連線可以分配而在佇列中等候的最大請求數,超過這個請求數的使用者連線就不會被接受–>
<maximum-new-connections>20</maximum-new-connections>
<!– 最少保持的空閒連線數–>
<prototype-count>5</prototype-count>
<!– 允許最大連線數,超過了這個連線,再有請求時,就排在佇列中等候,最大的等待請求數由maximum-new-connections決定–>
<maximum-connection-count>100</maximum-connection-count>
<!– 最小連線數–>
<minimum-connection-count>10</minimum-connection-count>
</proxool>
</something-else-entirely>

4. dbcp連線池
在hibernate3.0中,已經不再支援dbcp了,hibernate的作者在hibernate.org中,明確指出在實踐中發現dbcp有 BUG,在某些種情會產生很多空連線不能釋放,所以拋棄了對dbcp的支援。若需要使用dbcp,開發人員還需要將commons-pool- 1.2.jar 和commons-dbcp-1.2.1.jar兩個jar包加入到classpath中。dbcp與c3p0一樣,都是由hibernate建立連線 的。

在hibernate2.0中的配置建立如下:

hibernate.cfg.xml

<?xml version=”1.0″ encoding=”UTF-8″?>

<!DOCTYPE hibernate-configuration PUBLIC

“-//Hibernate/Hibernate Configuration DTD 2.0//EN”

“http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd“>

<hibernate-configuration>

<session-factory>

<!– 顯示實際操作資料庫時的SQL –>

<property name=”show_sql”>true</property>

<!– SQL方言,這邊設定的是MySQL –>

<property name=”dialect”>net.sf.hibernate.dialect.MySQLDialect</property>

<!–驅動程式,在後續的章節中將講述mysql、sqlserver和Oracle資料庫的配置 –>

<property name=”connection.driver_class”>……</property>

<!– JDBC URL –>

<property name=”connection.url”>……</property>

<!– 資料庫使用者名稱,eg. root –>

<property name=”connection.username”>…</property>

<!– 資料庫密碼, eg. root–>

<property name=”connection.password”>…</property>

<property name=”dbcp.maxActive”>100</property>

<property name=”dbcp.whenExhaustedAction”>1</property>

<property name=”dbcp.maxWait”>60000</property>

<property name=”dbcp.maxIdle”>10</property>

<property name=”dbcp.ps.maxActive”>100</property>

<property name=”dbcp.ps.whenExhaustedAction”>1</property>

<property name=”dbcp.ps.maxWait”>60000</property>

<property name=”dbcp.ps.maxIdle”>10</property>

<!– 物件與資料庫表格映像檔案 –>

<mapping resource=”com/amigo/pojo/User.hbm.xml”/>

<mapping resource=”com/amigo/pojo/Org.hbm.xml”/>

</session-factory>

</hibernate-configuration>

5. MySql連線配置
在hibernate中,可以配置很多種資料庫,例如MySql、Sql Server和Oracle,MySql的配置舉例如下:

hibernate.cfg.xml

<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE hibernate-configuration PUBLIC
“-//Hibernate/Hibernate Configuration DTD 3.0//EN”
“http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd“>

相關推薦

Hibernate配置各種資料來源

Hibernate的描述檔案可以是一個properties屬性檔案,也可以是一個xml檔案。下面講一下Hibernate.cfg.xml的配置。配置格式如下: 1. 配置資料來源 在Hibernate.cfg.xml中既可以配置JDBC,也可以配置JNDI。在本小

MySql配置ODBC資料來源

        一個基於ODBC的應用程式對資料庫的操作不依賴任何DBMS,不直接與DBMS打交道,所有的資料庫操作由對應的DBMS的ODBC驅動程式完成。所以說mysql配置ODBC資料來源也很重要。 工具/原料 事先配置相應的環境 mysql(mysql安裝

hibernate框架學習筆記2:配置文件

格式化 version validate ret root 主鍵生成策略 -m color 格式 實體類: package domain; public class Customer { private Long cust_id; priva

Hibernate——hibernate.cfg.xml檔案配置的標籤

<!-- 設定檔案版本以及字元編碼 --> <?xml version='1.0' encoding='utf-8'?> <!-- 引入DTD外部約束 --> <!DOCTYPE hibernate-configuration PU

spring整合hibernate中的配置檔案hibernate.cfg.xml的總結

applicationContext.xml配置檔案 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" x

Hibernate框架學習】:Hibernate進階之Hibernate配置檔案和物件關係對映配置檔案

       Hibernate核心配置檔案               我們先來看一個比較常見的hibernate.cfg.xml配置檔案: <!DOCTYPE hibernate-confi

Rsyslog配置文件(轉)

安裝 權限 lines true time cor optional tex 以及 最近在搭建日誌審計服務器,使用了rsyslog,發現這篇文章很有用,收藏一下。 原文鏈接:http://my.oschina.net/0757/blog/198329 具體內容: 非常詳

Apache的主要目錄和配置文件

監聽 erl 腳本 env tca live 斷開連接 linux real 一、Apache 主要配置文件註釋Apache的主配置文件:/etc/httpd/conf/httpd.conf默認站點主目錄:/var/www/html/Apache服務器的配置信息全部存儲在主

Nginx主配置參數,Nginx配置網站

lis javascrip ref 錯誤日誌 127.0.0.1 服務器配置 設置 代理服務器 減少 1.Niginx主配置文件參數詳解   a.Linux中安裝nginx。博文地址為:http://www.cnblogs.com/cindy-cindy/p/68474

Elasticsearch基本概念及核心配置文件

last log4j 強烈 內存 文檔 size oca 機制 集群   Elasticsearch5.X,下列的是Elasticsearch2.X系類配置,其實很多配置都是相互兼容的 1. 配置文件 config/elasticsearch.yml 主配置文件

elasticsearch配置文件

配置文件 文件夾 master 記錄 elasticsearch的config文件夾裏面有兩個配置文 件:elasticsearch.yml和logging.yml,第一個是es的基本配置文件,第二個是日誌配置文件,es也是使用log4j來記錄日 誌的,所以logging.yml裏的設置按普通

Redis常見配置文件

設置 lru 指定 數據分頁 tile color level 同步機制 ebp Redis常見配置文件詳解 # vi redis.conf daemonize yes #是否以後臺進程運行 pidfile /var/run/redis/redis-server.p

hibernate中inverse屬性

values 性能 update 關聯 維護 value str true 詳解 術語”inverse”直譯為”反轉”。在Hibernate中,inverse屬性指定了關聯關系中的方向。關聯關系中,inverse=“false”的為主動方,由主動方維護關聯關系。在一對多關聯

hibernate中 cascade屬性

-m hibernate 發現 執行效率 pda 不一定 () 程序執行效率 刪除 配置關聯時,我們考慮兩點:程序執行效率和實際業務需要,前面的例子中無論是單向的關聯還是雙向的關聯,我們都要分別對實體類使用session.save()才能將數據保存至數據庫。問題:如果

nginx配置vhost配置文件

pan cnblogs 實力 git color file www include pre //千鋒PHP-PHP培訓的實力派server { listen 80; server_name www.sina.com; roo

nginx配置項優化

nginx優化(1)nginx運行工作進程個數,一般設置cpu的核心或者核心數x2如果不了解cpu的核數,可以top命令之後按1看出來,也可以查看/proc/cpuinfo文件 grep ^processor /proc/cpuinfo | wc -l [[email protected]/* *

PHP配置文件php.ini

php配置文件詳解php.iniPHP配置文件詳解php.ini [PHP] ; PHP還是一個不斷發展的工具,其功能還在不斷地刪減 ; 而php.ini的設置更改可以反映出相當的變化, ; 在使用新的PHP版本前,研究一下php.ini會有好處的 ;;;;;;;;;;;;;;;;;;; ; 關於這個

Redis配置文件

客戶端連接 data val 行數 read 內存 虛擬內存 master led 1 daemonize yes #是否以後臺進程運行,默認為no 2 pidfile /var/run/redis.pid #如以後臺進程運行,則需指定一個pid,默認為/var

php.ini配置文件

php.ini配置文件詳解php.ini配置文件詳解查找 php.ini路徑:# /usr/local/php/bin/php -i |head看那一行Loaded Configuration File => /usr/local/php/etc/php.ini。如果這裏為None,那麽就說明沒有加載到

Samba 配置文件

無限 exc end samb 機會 lis 其他 管理 conn Samba 的配置文件 /etc/samba/smb.conf 分為兩大部分,一部分是 [global] ,即全局配置,另一部分是 [home] 、[printer] 、[自定義共享名] ,這些都是共享的部