[hibernate-dev] org.hibernate.engine.jdbc.dialect.spi.DialectResolver

Steve Ebersole steve at hibernate.org
Wed Aug 29 10:43:04 EDT 2012


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 at hibernate.org
http://hibernate.org


More information about the hibernate-dev mailing list