Issue Details (XML | Word | Printable)

Key: HHH-2372
Type: Improvement Improvement
Status: Closed Closed
Resolution: Fixed
Priority: Major Major
Assignee: Steve Ebersole
Reporter: Max Rydahl Andersen
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
Hibernate Core

Allow tooling to create Settings via SettingsFactory without contacting the db

Created: 19/Jan/07 08:22 AM   Updated: 20/Feb/07 07:08 AM
Component/s: core
Affects Version/s: 3.2.1
Fix Version/s: 3.2.2

Time Tracking:
Not Specified

Issue Links:
Prerequisite
 


 All   Comments   Work Log   Change History   FishEye      Sort Order: Ascending order - Click to sort in descending order
Max Rydahl Andersen added a comment - 19/Jan/07 08:22 AM
Index: C:/work/os/hibernate/Branch_3_2/Hibernate3/src/org/hibernate/cfg/SettingsFactory.java
===================================================================
--- C:/work/os/hibernate/Branch_3_2/Hibernate3/src/org/hibernate/cfg/SettingsFactory.java (revision 10998)
+++ C:/work/os/hibernate/Branch_3_2/Hibernate3/src/org/hibernate/cfg/SettingsFactory.java (working copy)
@@ -72,45 +72,48 @@
  boolean metaReportsDDLCausesTxnCommit = false;
  boolean metaReportsDDLInTxnSupported = true;
 
- try {
- Connection conn = connections.getConnection();
+ boolean useDatabaseMetaData = PropertiesHelper.getBoolean("hibernate.use_database_metadata", props, true);
+ if(useDatabaseMetaData) {
  try {
- DatabaseMetaData meta = conn.getMetaData();
- databaseName = meta.getDatabaseProductName();
- databaseMajorVersion = getDatabaseMajorVersion(meta);
- log.info("RDBMS: " + databaseName + ", version: " + meta.getDatabaseProductVersion() );
- log.info("JDBC driver: " + meta.getDriverName() + ", version: " + meta.getDriverVersion() );
-
- metaSupportsScrollable = meta.supportsResultSetType(ResultSet.TYPE_SCROLL_INSENSITIVE);
- metaSupportsBatchUpdates = meta.supportsBatchUpdates();
- metaReportsDDLCausesTxnCommit = meta.dataDefinitionCausesTransactionCommit();
- metaReportsDDLInTxnSupported = !meta.dataDefinitionIgnoredInTransactions();
-
- if ( Environment.jvmSupportsGetGeneratedKeys() ) {
- try {
- Boolean result = (Boolean) DatabaseMetaData.class.getMethod("supportsGetGeneratedKeys", null)
+ Connection conn = connections.getConnection();
+ try {
+ DatabaseMetaData meta = conn.getMetaData();
+ databaseName = meta.getDatabaseProductName();
+ databaseMajorVersion = getDatabaseMajorVersion(meta);
+ log.info("RDBMS: " + databaseName + ", version: " + meta.getDatabaseProductVersion() );
+ log.info("JDBC driver: " + meta.getDriverName() + ", version: " + meta.getDriverVersion() );
+
+ metaSupportsScrollable = meta.supportsResultSetType(ResultSet.TYPE_SCROLL_INSENSITIVE);
+ metaSupportsBatchUpdates = meta.supportsBatchUpdates();
+ metaReportsDDLCausesTxnCommit = meta.dataDefinitionCausesTransactionCommit();
+ metaReportsDDLInTxnSupported = !meta.dataDefinitionIgnoredInTransactions();
+
+ if ( Environment.jvmSupportsGetGeneratedKeys() ) {
+ try {
+ Boolean result = (Boolean) DatabaseMetaData.class.getMethod("supportsGetGeneratedKeys", null)
  .invoke(meta, null);
- metaSupportsGetGeneratedKeys = result.booleanValue();
+ metaSupportsGetGeneratedKeys = result.booleanValue();
+ }
+ catch (AbstractMethodError ame) {
+ metaSupportsGetGeneratedKeys = false;
+ }
+ catch (Exception e) {
+ metaSupportsGetGeneratedKeys = false;
+ }
  }
- catch (AbstractMethodError ame) {
- metaSupportsGetGeneratedKeys = false;
- }
- catch (Exception e) {
- metaSupportsGetGeneratedKeys = false;
- }
+
  }
-
+ finally {
+ connections.closeConnection(conn);
+ }
  }
- finally {
- connections.closeConnection(conn);
+ catch (SQLException sqle) {
+ log.warn("Could not obtain connection metadata", sqle);
  }
+ catch (UnsupportedOperationException uoe) {
+ // user supplied JDBC connections
+ }
  }
- catch (SQLException sqle) {
- log.warn("Could not obtain connection metadata", sqle);
- }
- catch (UnsupportedOperationException uoe) {
- // user supplied JDBC connections
- }
  settings.setDataDefinitionImplicitCommit( metaReportsDDLCausesTxnCommit );
  settings.setDataDefinitionInTransactionSupported( metaReportsDDLInTxnSupported );
 

Steve Ebersole added a comment - 19/Jan/07 08:46 AM
trunk / 3.2

the actual setting name used was 'hibernate.temp.use_jdbc_metadata_defaults'