📄 settingsfactory.java
字号:
settings.setOrderInsertsEnabled( orderInserts ); //Query parser settings: settings.setQueryTranslatorFactory( createQueryTranslatorFactory(properties) ); Map querySubstitutions = PropertiesHelper.toMap(Environment.QUERY_SUBSTITUTIONS, " ,=;:\n\t\r\f", properties); log.info("Query language substitutions: " + querySubstitutions); settings.setQuerySubstitutions(querySubstitutions); boolean jpaqlCompliance = PropertiesHelper.getBoolean( Environment.JPAQL_STRICT_COMPLIANCE, properties, false ); settings.setStrictJPAQLCompliance( jpaqlCompliance ); log.info( "JPA-QL strict compliance: " + enabledDisabled( jpaqlCompliance ) ); // Second-level / query cache: boolean useSecondLevelCache = PropertiesHelper.getBoolean(Environment.USE_SECOND_LEVEL_CACHE, properties, true); log.info( "Second-level cache: " + enabledDisabled(useSecondLevelCache) ); settings.setSecondLevelCacheEnabled(useSecondLevelCache); boolean useQueryCache = PropertiesHelper.getBoolean(Environment.USE_QUERY_CACHE, properties); log.info( "Query cache: " + enabledDisabled(useQueryCache) ); settings.setQueryCacheEnabled(useQueryCache); // The cache provider is needed when we either have second-level cache enabled // or query cache enabled. Note that useSecondLevelCache is enabled by default settings.setRegionFactory( createRegionFactory( properties, ( useSecondLevelCache || useQueryCache ) ) ); boolean useMinimalPuts = PropertiesHelper.getBoolean( Environment.USE_MINIMAL_PUTS, properties, settings.getRegionFactory().isMinimalPutsEnabledByDefault() ); log.info( "Optimize cache for minimal puts: " + enabledDisabled(useMinimalPuts) ); settings.setMinimalPutsEnabled(useMinimalPuts); String prefix = properties.getProperty(Environment.CACHE_REGION_PREFIX); if ( StringHelper.isEmpty(prefix) ) prefix=null; if (prefix!=null) log.info("Cache region prefix: "+ prefix); settings.setCacheRegionPrefix(prefix); boolean useStructuredCacheEntries = PropertiesHelper.getBoolean(Environment.USE_STRUCTURED_CACHE, properties, false); log.info( "Structured second-level cache entries: " + enabledDisabled(useStructuredCacheEntries) ); settings.setStructuredCacheEntriesEnabled(useStructuredCacheEntries); if (useQueryCache) settings.setQueryCacheFactory( createQueryCacheFactory(properties) ); //SQL Exception converter: SQLExceptionConverter sqlExceptionConverter; try { sqlExceptionConverter = SQLExceptionConverterFactory.buildSQLExceptionConverter( dialect, properties ); } catch(HibernateException e) { log.warn("Error building SQLExceptionConverter; using minimal converter"); sqlExceptionConverter = SQLExceptionConverterFactory.buildMinimalSQLExceptionConverter(); } settings.setSQLExceptionConverter(sqlExceptionConverter); //Statistics and logging: boolean showSql = PropertiesHelper.getBoolean(Environment.SHOW_SQL, properties); if (showSql) log.info("Echoing all SQL to stdout");// settings.setShowSqlEnabled(showSql); boolean formatSql = PropertiesHelper.getBoolean(Environment.FORMAT_SQL, properties);// settings.setFormatSqlEnabled(formatSql); settings.setSqlStatementLogger( new SQLStatementLogger( showSql, formatSql ) ); boolean useStatistics = PropertiesHelper.getBoolean(Environment.GENERATE_STATISTICS, properties); log.info( "Statistics: " + enabledDisabled(useStatistics) ); settings.setStatisticsEnabled(useStatistics); boolean useIdentifierRollback = PropertiesHelper.getBoolean(Environment.USE_IDENTIFIER_ROLLBACK, properties); log.info( "Deleted entity synthetic identifier rollback: " + enabledDisabled(useIdentifierRollback) ); settings.setIdentifierRollbackEnabled(useIdentifierRollback); //Schema export: String autoSchemaExport = properties.getProperty(Environment.HBM2DDL_AUTO); if ( "validate".equals(autoSchemaExport) ) settings.setAutoValidateSchema(true); if ( "update".equals(autoSchemaExport) ) settings.setAutoUpdateSchema(true); if ( "create".equals(autoSchemaExport) ) settings.setAutoCreateSchema(true); if ( "create-drop".equals(autoSchemaExport) ) { settings.setAutoCreateSchema(true); settings.setAutoDropSchema(true); } EntityMode defaultEntityMode = EntityMode.parse( properties.getProperty( Environment.DEFAULT_ENTITY_MODE ) ); log.info( "Default entity-mode: " + defaultEntityMode ); settings.setDefaultEntityMode( defaultEntityMode ); boolean namedQueryChecking = PropertiesHelper.getBoolean( Environment.QUERY_STARTUP_CHECKING, properties, true ); log.info( "Named query checking : " + enabledDisabled( namedQueryChecking ) ); settings.setNamedQueryStartupCheckingEnabled( namedQueryChecking );// String provider = properties.getProperty( Environment.BYTECODE_PROVIDER );// log.info( "Bytecode provider name : " + provider );// BytecodeProvider bytecodeProvider = buildBytecodeProvider( provider );// settings.setBytecodeProvider( bytecodeProvider ); return settings; } protected BytecodeProvider buildBytecodeProvider(String providerName) { if ( "javassist".equals( providerName ) ) { return new org.hibernate.bytecode.javassist.BytecodeProviderImpl(); } else if ( "cglib".equals( providerName ) ) { return new org.hibernate.bytecode.cglib.BytecodeProviderImpl(); } else { log.debug( "using cglib as bytecode provider by default" ); return new org.hibernate.bytecode.cglib.BytecodeProviderImpl(); } } private int getDatabaseMajorVersion(DatabaseMetaData meta) { try { Method gdbmvMethod = DatabaseMetaData.class.getMethod("getDatabaseMajorVersion", null); return ( (Integer) gdbmvMethod.invoke(meta, null) ).intValue(); } catch (NoSuchMethodException nsme) { return 0; } catch (Throwable t) { log.debug("could not get database version from JDBC metadata"); return 0; } } private static String enabledDisabled(boolean value) { return value ? "enabled" : "disabled"; } protected QueryCacheFactory createQueryCacheFactory(Properties properties) { String queryCacheFactoryClassName = PropertiesHelper.getString( Environment.QUERY_CACHE_FACTORY, properties, "org.hibernate.cache.StandardQueryCacheFactory" ); log.info("Query cache factory: " + queryCacheFactoryClassName); try { return (QueryCacheFactory) ReflectHelper.classForName(queryCacheFactoryClassName).newInstance(); } catch (Exception cnfe) { throw new HibernateException("could not instantiate QueryCacheFactory: " + queryCacheFactoryClassName, cnfe); } } protected RegionFactory createRegionFactory(Properties properties, boolean cachingEnabled) { String regionFactoryClassName = PropertiesHelper.getString( Environment.CACHE_REGION_FACTORY, properties, null ); if ( regionFactoryClassName == null && cachingEnabled ) { String providerClassName = PropertiesHelper.getString( Environment.CACHE_PROVIDER, properties, null ); if ( providerClassName != null ) { // legacy behavior, apply the bridge... regionFactoryClassName = RegionFactoryCacheProviderBridge.class.getName(); } } if ( regionFactoryClassName == null ) { regionFactoryClassName = DEF_CACHE_REG_FACTORY; } log.info( "Cache region factory : " + regionFactoryClassName ); try { return ( RegionFactory ) ReflectHelper.classForName( regionFactoryClassName ) .getConstructor( new Class[] { Properties.class } ) .newInstance( new Object[] { properties } ); } catch ( Exception e ) { throw new HibernateException( "could not instantiate RegionFactory [" + regionFactoryClassName + "]", e ); } } protected QueryTranslatorFactory createQueryTranslatorFactory(Properties properties) { String className = PropertiesHelper.getString( Environment.QUERY_TRANSLATOR, properties, "org.hibernate.hql.ast.ASTQueryTranslatorFactory" ); log.info("Query translator: " + className); try { return (QueryTranslatorFactory) ReflectHelper.classForName(className).newInstance(); } catch (Exception cnfe) { throw new HibernateException("could not instantiate QueryTranslatorFactory: " + className, cnfe); } } protected BatcherFactory createBatcherFactory(Properties properties, int batchSize) { String batcherClass = properties.getProperty(Environment.BATCH_STRATEGY); if (batcherClass==null) { return batchSize==0 ? (BatcherFactory) new NonBatchingBatcherFactory() : (BatcherFactory) new BatchingBatcherFactory(); } else { log.info("Batcher factory: " + batcherClass); try { return (BatcherFactory) ReflectHelper.classForName(batcherClass).newInstance(); } catch (Exception cnfe) { throw new HibernateException("could not instantiate BatcherFactory: " + batcherClass, cnfe); } } } protected ConnectionProvider createConnectionProvider(Properties properties) { return ConnectionProviderFactory.newConnectionProvider(properties); } protected TransactionFactory createTransactionFactory(Properties properties) { return TransactionFactoryFactory.buildTransactionFactory(properties); } protected TransactionManagerLookup createTransactionManagerLookup(Properties properties) { return TransactionManagerLookupFactory.getTransactionManagerLookup(properties); } private Dialect determineDialect(Properties props, String databaseName, int databaseMajorVersion) { return DialectFactory.buildDialect( props, databaseName, databaseMajorVersion ); } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -