I think we need to consider changing DialectResolver to fit with some
upcoming JPA 2.1 features.
JPA 2.1 is adding some form of schema export. The initial plan there is
to identify the "dialect" to target by passing in the (1) database name
and (2) database version as it would come from JDBC DatabaseMetaData.
The connection may or may not be available.
Currently we just pass the DatabaseMetaData to the DialectResolver:
public Dialect resolveDialect(DatabaseMetaData metaData)
The original thinking was to support resolvers looking at information
other than just name/version ion making the determination (or even in
potentially configuring the Dialect before return). However all our
implementations are based on just name/version resolution.
Even worse the current proposal proposes using (String)
DatabaseMetaData#getDatabaseProductVersion whereas we use (int)
DatabaseMetaData#getDatabaseMajorVersion and (int)
DatabaseMetaData#getDatabaseMinorVersion inside the standard resolver
So should we change this contract?
public Dialect resolveDialect(String dbName, int majorVersion, int
minorVersion)
or
public Dialect resolveDialect(String dbName, String dbVersion)
WDYT?
--
steve(a)hibernate.org
http://hibernate.org