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.
Table of Contents
- Introduction to SQL standard
- Introduction to Hibernate Dialect
- How to identify supported Hibernate Dialects?
- Supported Hibernate Dialects
- Hibernate Dialect for MariaDB
- Hibernate Dialect for MySQL
- Hibernate Dialect for PostgreSQL
- Hibernate Dialect for Oracle
- Hibernate Dialect for SQLServer
- Hibernate Dialect for IBM DB2
- Hibernate Dialect for typical local development DBs like H2 and HSQL
- Hibernate Dialect for Derby
- Hibernate Dialect for SAP
- Hibernate Dialect for Informix
- Hibernate Dialect for Ingres
- Hibernate Dialect for Sybase
- Hibernate Dialect for Teradata
- Hibernate Dialects for other databases
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 of org.hibernate.dialect.Dialect by opening the class (Ctrl-Shift-T) and by typing Ctrl-T or context menu "Quick Type Hierachy" on the class name.
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
If you use this command line, be careful and verify the javadoc or the implementation prior setting the dialect!
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 | org.hibernate.dialect.MariaDBDialect | |
| MariaDB53Dialect | org.hibernate.dialect.MariaDB53Dialect | |
| MariaDB10Dialect | org.hibernate.dialect.MariaDB10Dialect | |
| MariaDB102Dialect | org.hibernate.dialect.MariaDB102Dialect | |
| MariaDB103Dialect | org.hibernate.dialect.MariaDB103Dialect | |
2.2.2. Hibernate Dialect for MySQL
| MySQLDialect | org.hibernate.dialect.MySQLDialect | |
| MySQL5Dialect | org.hibernate.dialect.MySQL5Dialect | |
| MySQL55Dialect | org.hibernate.dialect.MySQL55Dialect | |
| MySQL57Dialect | org.hibernate.dialect.MySQL57Dialect | |
| MySQLInnoDBDialect | org.hibernate.dialect.MySQLInnoDBDialect | |
| MySQL5InnoDBDialect | org.hibernate.dialect.MySQL5InnoDBDialect | |
| MySQL57InnoDBDialect | org.hibernate.dialect.MySQL57InnoDBDialect | |
| MySQLMyISAMDialect | org.hibernate.dialect.MySQLMyISAMDialect | deprecated, use instead property hibernate.dialect.storage_engine=myisam |
2.2.3. Hibernate Dialect for PostgreSQL
| PostgreSQLDialect | org.hibernate.dialect. | |
| PostgresPlusDialect | org.hibernate.dialect. | |
| PostgreSQL81Dialect | org.hibernate.dialect. | |
| PostgreSQL82Dialect | org.hibernate.dialect. | |
| PostgreSQL9Dialect | org.hibernate.dialect. | |
| PostgreSQL91Dialect | org.hibernate.dialect. | |
| PostgreSQL92Dialect | org.hibernate.dialect. | |
| PostgreSQL93Dialect | org.hibernate.dialect. | |
| PostgreSQL94Dialect | org.hibernate.dialect. | |
| PostgreSQL95Dialect | org.hibernate.dialect. | |
2.2.4. Hibernate Dialect for Oracle
| OracleDialect | org.hibernate.dialect. | |
| Oracle8iDialect | org.hibernate.dialect. | |
| Oracle9Dialect | org.hibernate.dialect. | |
| Oracle9iDialect | org.hibernate.dialect. | |
| Oracle10gDialect | org.hibernate.dialect. | |
| Oracle12cDialect | org.hibernate.dialect. | |
| DataDirectOracle9Dialect | org.hibernate.dialect. | |
2.2.5. Hibernate Dialect for SQLServer
| SQLServerDialect | org.hibernate.dialect. | |
| SQLServer2005Dialect | org.hibernate.dialect. | |
| SQLServer2008Dialect | org.hibernate.dialect. | |
| SQLServer2012Dialect | org.hibernate.dialect. | |
2.2.6. Hibernate Dialect for IBM DB2
| DB2Dialect | org.hibernate.dialect. | |
| DB2390Dialect | org.hibernate.dialect. | |
| DB2390V8Dialect | org.hibernate.dialect. | |
| DB2400Dialect | org.hibernate.dialect. | |
| DB297Dialect | org.hibernate.dialect. | |
2.2.7. Hibernate Dialect for typical local development DBs like H2 and HSQL
| H2Dialect | org.hibernate.dialect. | |
| HSQLDialect | org.hibernate.dialect. | |
2.2.8. Hibernate Dialect for Derby
| DerbyDialect | org.hibernate.dialect. | |
| DerbyTenFiveDialect | org.hibernate.dialect. | |
| DerbyTenSixDialect | org.hibernate.dialect. | |
| DerbyTenSevenDialect | org.hibernate.dialect. | |
2.2.9. Hibernate Dialect for SAP
| SAPDBDialect | org.hibernate.dialect. | |
| HANAColumnStoreDialect | org.hibernate.dialect. | |
| HANARowStoreDialect | org.hibernate.dialect. | |
2.2.10. Hibernate Dialect for Informix
| InformixDialect | org.hibernate.dialect. | |
| Informix10Dialect | org.hibernate.dialect. | |
2.2.11. Hibernate Dialect for Ingres
| IngresDialect | org.hibernate.dialect. | |
| Ingres9Dialect | org.hibernate.dialect. | |
| Ingres10Dialect | org.hibernate.dialect. | |
2.2.12. Hibernate Dialect for Sybase
| SybaseDialect | org.hibernate.dialect. | |
| Sybase11Dialect | org.hibernate.dialect. | |
| SybaseAnywhereDialect | org.hibernate.dialect. | |
| SybaseASE15Dialect | org.hibernate.dialect. | |
| SybaseASE157Dialect | org.hibernate.dialect. | |
2.2.13. Hibernate Dialect for Teradata
| TeradataDialect | org.hibernate.dialect. | |
| Teradata14Dialect | org.hibernate.dialect. | |
2.2.14. Hibernate Dialects for other databases
| Cache71Dialect | org.hibernate.dialect. | |
| CUBRIDDialect | org.hibernate.dialect. | |
| FirebirdDialect | org.hibernate.dialect. | |
| FrontBaseDialect | org.hibernate.dialect. | |
| InterbaseDialect | org.hibernate.dialect. | |
JDataStoreDialect | org.hibernate.dialect. | |
| MckoiDialect | org.hibernate.dialect. | |
| MimerSQLDialect | org.hibernate.dialect. | |
| PointbaseDialect | org.hibernate.dialect. | |
| ProgressDialect | org.hibernate.dialect. | |
| RDMSOS2200Dialect | org.hibernate.dialect. | |
| TimesTenDialect | org.hibernate.dialect. | |