Hibernate方言 不同資料庫及其對應的方言

2021-10-02 03:37:56 字數 1829 閱讀 1161

在hibernate底層依然使用sql語句來執行資料庫操作,雖然所有關係型資料庫都支援使用標準sql語句,但所有資料庫都對標準sql進行了一些擴充套件,所以在語法細節上存在一些差異,因此hibernate需要根據資料庫來識別這些差異。假如系統需要資料庫的變換時,那麼用hibernate的話就只需要改一改配置檔案(修改連線字串、驅動類、方言等),而用傳統的jdbc時,那麼sql語言可能就要有很多改動。

為實現hql語句向不同資料庫的sql語句轉換時,解決不同資料庫之間的差異而制定的一套」規範」。 

舉例來說,我們在mysql資料庫裡進行分頁查詢,只需使用limit關鍵字就可以了;而標準sql並不支援limit關鍵字,例如oracle則需要使用行內檢視的方式來進行分頁。同樣的應用程式,當我們在不同資料庫之間遷移時,底層資料庫的訪問細節會發生改變,而hibernate也為這種改變做好了準備,現在我們需要做的是:告訴hibernate應用程式的底層即將使用哪 

種資料庫——這就是hibernate方言。

簡單,為hibernate設定合適的資料庫方言,hibernate將可以自動應付底層資料庫訪問所存在的細節差異。

列表如下: 

rdbms 方言 

db2 org.hibernate.dialect.db2dialect 

db2 as/400 org.hibernate.dialect.db2400dialect 

db2 os390 org.hibernate.dialect.db2390dialect 

postgresql org.hibernate.dialect.postgresqldialect 

mysql org.hibernate.dialect.mysqldialect 

mysql with innodb org.hibernate.dialect.mysqlinnodbdialect 

mysql with myisam org.hibernate.dialect.mysqlmyisamdialect 

oracle (any version) org.hibernate.dialect.oracledialect 

oracle 9i/10g org.hibernate.dialect.oracle9dialect 

sybase org.hibernate.dialect.sybasedialect 

sybase anywhere org.hibernate.dialect.sybaseanywheredialect 

microsoft sql server org.hibernate.dialect.sqlserverdialect 

sap db org.hibernate.dialect.sapdbdialect 

informix org.hibernate.dialect.informixdialect 

hypersonicsql org.hibernate.dialect.hsqldialect 

ingres org.hibernate.dialect.ingresdialect 

progress org.hibernate.dialect.progressdialect 

mckoi sql org.hibernate.dialect.mckoidialect 

interbase org.hibernate.dialect.interbasedialect 

pointbase org.hibernate.dialect.pointbasedialect 

frontbase org.hibernate.dialect.frontbasedialect 

firebird org.hibernate.dialect.firebirddialect 

Hibernate方言配置

在開發hibernate的程式時,忽然用到了資料庫firebird,對於我來講不是很長用,忽然想到那麼多資料庫,方言都不一樣就再次記錄一下,以備後用。對於不同的資料庫,方言的值dialect是不同的,那麼下面就列出在不同的資料庫中如何設定該dialect值 如下 rdbms 方言db2 org.hi...

hibernate方言問題

hibernate不識別資料中的字段才會導致方言,這個很簡單你只需要把資料庫中的字段屬性改為hibernate識別的屬性就可以了,比如oracle屬性是varchar,而hibernate他在oracle上只識別varchar 2 或者開啟hibernate的方言 在配置類裡開啟方言 指向你開啟方言...

hibernate 資料庫方言列表

rdbms dialect db2 org.hibernate.dialect.db2dialect db2 as 400 org.hibernate.dialect.db2400dialect db2 os390 org.hibernate.dialect.db2390dialect postgr...