Hibernate provides a lot of different dialects to match to the corresponding used database. E.g. if you want to use Hibernate with MySQL you need to use of course the Hibernate Dialect for MySQL. In this article you will find all Hibernate Dialects and how to determine the supported databases per your hibernate version.

1. Introduction to SQL standard

SQL is already defined as a standard by American National Standard Institute (ANSI) since 1986 and as International Organization for Standardization (ISO) since 1987. So a very mature standard.

Anyway every database vendor has interpreted some features differently, if the standard was not fully clear about some topics. Also every vendor has features, which are still not in the standard defined.

All together sadly end up in the situation, that your persistency needs to know about the features each database is able to support. This is solved in Hibernate as a Hibernate Dialect declaration in your code with the parameter:

hibernate.dialect=org.hibernate.dialect.MySQLDialect

2. Introduction to Hibernate Dialect

Hibernate has a defined a common abstract Super-Class

org.hibernate.dialect.Dialect

The hibernate developer have been pretty busy to support a bunch of database. You will see them later in the article.

2.1. How to identify supported Hibernate DIalects?

In eclipse you can find all subclasses by typing Ctrl-T or context menu "Quick Type Hierachy"

You can also use the command line to identify all Hibernate DIalects by executing (under Linux, Cygwin)

unzip -l $HOME/.m2/repository/org/hibernate/hibernate-core/5.2.17.Final/hibernate-core-5.2.17.Final.jar \
| grep "org/hibernate/dialect" | grep "Dialect" | grep -v "Abstract" | awk '{print $4}' \
| awk -F'[/]' '{print $4}' | grep -v '\$' | awk -F'[.]' '{print $1}' | sort

2.2. Supported Hibernate Dialects

The version 5.2.17 as the example above has following Hibernate Dialects implemented

2.2.1. Hibernate Dialect for MariaDB

MariaDBDialect
MariaDB102Dialect
MariaDB103Dialect
MariaDB10Dialect
MariaDB53Dialect

2.2.2. Hibernate Dialect for MySQL

MySQLDialect
MySQL55Dialect
MySQL57Dialect
MySQL57InnoDBDialect
MySQL5Dialect
MySQL5InnoDBDialect
MySQLInnoDBDialect
MySQLMyISAMDialect

2.2.3. Hibernate Dialect for PostgreSQL

PostgreSQLDialect
PostgresPlusDialect
PostgreSQL81Dialect
PostgreSQL82Dialect
PostgreSQL9Dialect
PostgreSQL91Dialect
PostgreSQL92Dialect
PostgreSQL93Dialect
PostgreSQL94Dialect
PostgreSQL95Dialect

2.2.4. Hibernate Dialect for Oracle

OracleDialect
Oracle10gDialect
Oracle12cDialect
Oracle8iDialect
Oracle9Dialect
Oracle9iDialect
DataDirectOracle9Dialect

2.2.5. Hibernate Dialect for SQLServer

SQLServerDialect
SQLServer2005Dialect
SQLServer2008Dialect
SQLServer2012Dialect

2.2.6. Hibernate Dialect for IBM DB2

DB2Dialect
DB2390Dialect
DB2390V8Dialect
DB2400Dialect
DB297Dialect

2.2.7. Hibernate Dialect for typical local development DBs like H2 and HSQL

H2Dialect

HSQLDialect

2.2.8. Hibernate Dialect for Derby

DerbyDialect
DerbyTenFiveDialect
DerbyTenSevenDialect
DerbyTenSixDialect

2.2.9. Hibernate Dialect for SAP

SAPDBDialect
HANAColumnStoreDialect
HANARowStoreDialect

2.2.10. Hibernate Dialect for Informix

InformixDialect
Informix10Dialect

2.2.11. Hibernate Dialect for Ingres

IngresDialect
Ingres10Dialect
Ingres9Dialect

2.2.12. Hibernate Dialect for Sybase

SybaseDialect
Sybase11Dialect
SybaseAnywhereDialect
SybaseASE157Dialect
SybaseASE15Dialect

2.2.13. Hibernate Dialect for Teradata

TeradataDialect
Teradata14Dialect

2.2.14. Hibernate Dialects for other databases

Cache71Dialect
CUBRIDDialect

FirebirdDialect

FrontBaseDialect

InterbaseDialect
JDataStoreDialect

MckoiDialect
MimerSQLDialect

PointbaseDialect

ProgressDialect

RDMSOS2200Dialect

TimesTenDialect