當前位置:首頁 » 操作系統 » hibernate跨資料庫

hibernate跨資料庫

發布時間: 2022-07-15 22:28:04

㈠ hibernate不同資料庫連接查詢

在 hibernate 裡面寫原生sql——ANSI SQL,就可以這樣

如果單查詢,還可以用視圖的方式

㈡ hibernate跨資料庫查詢

可以使用hibernate支持的Hql語言實現跨平台操作資料庫的要求!

㈢ Hibernate框架適用於什麼項目說明其優劣性

Hibernate框架基本上適用於所有項目,其優點在於hibernate對表的級聯操作,如何你操作一條數據對很多表的數據都有影響,hibernate的級聯會自動幫你維護表裡面的數據,前提是要配置級聯選項。
其二優點在於hibernate跨資料庫,我想只要是程序員,都希望自己的項目開發後適用於所有的資料庫,不只是針對某一種資料庫,如果單純的用jdbc去操作資料庫,那麼就必須編寫sql語句,不同的資料庫的sql語句稍微有差距,那麼項目肯定是針對某個資料庫進行開發。要想hibernate的項目實用所有數據,前提是不要使用hibernate的純sql查詢。

一般大項目都是對性能要求很高,也就是並發量很大,整個項目的性能瓶頸都壓在了資料庫上,sql語句的好壞直接影響性能,如果不精通hibernate的查詢語句和hibernate管理的對象的狀態的區別就不要使用hibernate。什麼是精通hibernate ,你懂的。

㈣ hibernate可以跨資料庫嗎

首先來說,跨資料庫肯定是可以的!
通常有兩個方法,第一個是笨辦法,就是在配置項里定義兩個數據源,並且這兩個數據源分屬於兩個SessionFaction對象。並且在代碼中也有創建兩個對象分別對應兩個資料庫,這樣做比較麻煩,代碼會很繁瑣,並且執行效率不一定高。

第二個辦法是使用spring開源框架里提供的動態數據源,通過動態的載入,將兩個數據源信息載入到一個SessionnFacgtion對象中。方法一裡面提到的缺點在這里都能夠很好的解決。

大概步驟如下:
1.org.springframework.beans.factory.support.DefaultListableBeanF

actory獲得bean工廠,可以添加銷毀數據源;

2.org.springframework.beans.factory.support.BeanDefinitionBuilder動態創建bean,然後通過
DefaultListableBeanFactory.registerBeanDefinition(dsInfo.getId(), beanDefinitionBuilder.getBeanDefinition()); 注冊數據源事務

3.銷毀數據源
beanFactory.destroySingleton(tsId);
beanFactory.removeBeanDefinition(tsId);

㈤ 如何用hibernate實現跨oracle資料庫操作

如果用的myeclipsese的話,打開window---->open perspective---->Myeclipse Haibernate,然後new一個,然後的然後,......在new的這個點擊右鍵有個反向工程,就好了!

㈥ hibernate與資料庫連接的幾種方式

三種連接都是以連接MySQl為例。

<!-- JDBC驅動程序 -->
<property name="connection.driver_class">org.gjt.mm.mysql.Driver</property> <property name="connection.url">jdbc:mysql://localhost:3306/struts?useUnicode=true&characterEncoding=GBK</property> <!-- 資料庫用戶名 -->
<property name="connection.username">root</property> <!-- 資料庫密碼 -->
<property name="connection.password">8888</property>

上面的一段配置,在c3p0和dbcp中,都是必需的,因為hibernate會根據上述的配置來生成connections,再交給c3p0或dbcp管理.但是,proxool則不能,雖然說服文檔上說proxool也可以和hibernate結合,但我按照官方文檔上的說明怎麼配也出錯,而且,到了sun和hibernat有的官方網站上問了幾天,都沒有一個人回復。後來我只能讓proxool自身來生成連接,這在下面再講。

1 C3P0

只需在hibernate.cfg.xml中加入
<property name="c3p0.min_size">5</property>
<property name="c3p0.max_size">30</property>
<property name="c3p0.time_out">1800</property>
<property name="c3p0.max_statement">50</property>

還有在classespath中加入c3p0-0.8.4.5.jar

2 dbcp

在hibernate.cfg.xml中加入

<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>

還有在classespath中加入commons-pool-1.2.jar 和commons-dbcp-1.2.1.jar.

3 proxool

在hibernate.cfg.xml中加入

<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>

然後,在和hibernate.cfg.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只能管理由自己產生的連接-->
<driver-url>jdbc:mysql://localhost:3306/struts?useUnicode=true&characterEncoding=GBK</driver-url>
<driver-class>org.gjt.mm.mysql.Driver</driver-class>
<driver-properties>
<property name="user" value="root"/>
<property name="password" value="8888"/>
</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>

並在classespath中加入proxool-0.8.3.jar

㈦ hibernate跨資料庫查詢問題

不可以跨資料庫連接查詢的,這得看資料庫中沒有這方面的其他支持。
而且你現在這樣查根本就不在一個事物中,如果需要支持多資料庫事物需要使用jta,分布式事物。

㈧ hibernate切換了不同的資料庫,那hql還需要改動嗎它會自動轉換成對應資料庫語言的sql嗎

不需要改動。hql是獨立於資料庫的,hibernate切換資料庫以後,除了jdbc的一些如地址、用戶名、密碼要換以外。

Hibernate支持不同的資料庫主要是用方言也就是dialect的,對應就是hibernate.cfg.xml配置文件里的一個設置,比如 SQL Server的就是:

<propertyname="hibernate.dialect"value="org.hibernate.dialect.SQLServerDialect"/>

這里的org.hibernate.dialect.SQLServerDialect是hibernate帶的或你自己提供的一個資料庫數據類型映射的一個Java類,由它處理不同資料庫的區別。

但是如果不同的資料庫之間差別太大的話,即直接要寫不同的SQL語句的話,Hibernate的dialect也處理不了。

熱點內容
a星演算法視頻 發布:2025-01-22 07:55:01 瀏覽:878
快手安卓怎麼直播 發布:2025-01-22 07:54:58 瀏覽:937
買伺服器搭建vpn 發布:2025-01-22 07:53:21 瀏覽:808
路由器忘記密碼如何解 發布:2025-01-22 07:38:47 瀏覽:153
5分鍾視頻編譯 發布:2025-01-22 07:36:33 瀏覽:772
asp執行存儲過程 發布:2025-01-22 07:35:55 瀏覽:126
鎮政府搭建伺服器 發布:2025-01-22 07:32:13 瀏覽:1001
安卓系統可以查去過哪裡嗎 發布:2025-01-22 07:25:05 瀏覽:27
三星手機怎麼設置熱點密碼 發布:2025-01-22 07:20:11 瀏覽:38
Ip呼叫伺服器 發布:2025-01-22 07:19:32 瀏覽:634