首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Hibernate 方言大全:主流資料庫 Dialect 速查表與配置範例

     編輯:Java 相關知識

Hibernate 透過 dialect 屬性適配不同資料庫的 SQL 差異 (分頁、鎖提示、型別映射、函數等)。正確設定方言是跨資料庫可移植的基石。

常用資料庫 Dialect 對照表

資料庫Dialect 類別全名備註
MySQL (InnoDB)org.hibernate.dialect.MySQLInnoDBDialect支援交易、外鍵,生產首選
MySQL (MyISAM)org.hibernate.dialect.MySQLMyISAMDialect不支援交易,唯讀/日誌表可用
MySQL (通用)org.hibernate.dialect.MySQLDialect自動偵測儲存引擎
Oracle 9i/10g/11gorg.hibernate.dialect.Oracle10gDialect支援分頁優化、Sequence、LOB
Oracle (通用)org.hibernate.dialect.OracleDialect較舊版本相容
PostgreSQLorg.hibernate.dialect.PostgreSQLDialect支援 UUID、JSONB、陣列型別
SQL Server 2005+org.hibernate.dialect.SQLServerDialect支援分頁 (ROW_NUMBER)、Identity
SQL Server 2000org.hibernate.dialect.SQLServerDialect需配合 jTDS 驅動
DB2org.hibernate.dialect.DB2Dialect支援 Sequence、Identity
Sybase ASEorg.hibernate.dialect.SybaseDialect
HSQLDBorg.hibernate.dialect.HSQLDialect嵌入式測試常用
Firebirdorg.hibernate.dialect.FirebirdDialect
Informixorg.hibernate.dialect.InformixDialect
Ingresorg.hibernate.dialect.IngresDialect
Progressorg.hibernate.dialect.ProgressDialect
SAP DB / MaxDBorg.hibernate.dialect.SAPDBDialect
PointBaseorg.hibernate.dialect.PointbaseDialect
FrontBaseorg.hibernate.dialect.FrontbaseDialect
InterBaseorg.hibernate.dialect.InterbaseDialect
Mckoi SQLorg.hibernate.dialect.MckoiDialect

完整配置範例 (含連線池)

<session-factory>
    <!-- MySQL 範例 -->
    <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="connection.url">jdbc:mysql://localhost:3306/mydb?useUnicode=true&amp;characterEncoding=utf8</property>
    <property name="connection.username">root</property>
    <property name="connection.password">password</property>
    <property name="dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>

    <!-- SQL Server (jTDS) 範例 -->
    <!--
    <property name="connection.driver_class">net.sourceforge.jtds.jdbc.Driver</property>
    <property name="connection.url">jdbc:jtds:sqlserver://host:1433/dbname</property>
    <property name="dialect">org.hibernate.dialect.SQLServerDialect</property>
    -->

    <!-- Oracle 範例 -->
    <!--
    <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
    <property name="connection.url">jdbc:oracle:thin:@host:1521:sid</property>
    <property name="dialect">org.hibernate.dialect.Oracle10gDialect</property>
    -->

    <property name="show_sql">true</property>
    <property name="hibernate.c3p0.min_size">5</property>
    <property name="hibernate.c3p0.max_size">20</property>
    <property name="hibernate.c3p0.timeout">1800</property>
    <property name="hibernate.c3p0.max_statements">50</property>
</session-factory>

驅動 JAR 必備清單

  • MySQL: mysql-connector-java-5.1.x.jar (或 8.0.x 對應驅動類 com.mysql.cj.jdbc.Driver)
  • SQL Server: jtds-1.3.1.jar (推薦) 或 Microsoft 官方 mssql-jdbc.jar
  • Oracle: ojdbc6.jar (JDK6) / ojdbc8.jar (JDK8+)
  • PostgreSQL: postgresql-42.x.jar

進階提示

  • 自訂方言:繼承現有 Dialect 覆寫 registerColumnType、getLimitString 等方法,支援特殊型別或分頁語法
  • Hibernate 5.2+ 部分方言類別移動套件,遷移時留意 org.hibernate.dialect → org.hibernate.dialect.* 結構調整
  • 方言不僅影響 DDL 生成,還決定 SessionFactory 內部 SQL 轉譯、鎖模式、結果集處理等核心行為
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved