我修复了它=)我真的必须扎根寻找这个问题的答案。基本上,它涉及到加载元数据和JDBC驱动程序。它正在加载所有元数据,包括sql列旁边的注释和其他各种构造,这些都是操作所不需要的。我不知道为什么默认情况下会启用此功能,但是除非明确需要,否则您应该关闭此功能:
config.setProperty("hibernate.temp.use_jdbc_Metadata_defaults","false");
@H_403_5@立即连接!
我可以找到的唯一信息是在代码中:
107 // 'hibernate.temp.use_jdbc_Metadata_defaults' is a temporary magic value. 108 // The need for it is intended to be alleviated with future development, thus it is 109 // not defined as an Environment constant... 110 // 111 // it is used to control whether we should consult the JDBC Metadata to determine 112 // certain Settings default values; it is useful to *not* do this when the database 113 // may not be available (mainly in tools usage). 114 boolean useJdbcMetadata = ConfigurationHelper.getBoolean( "hibernate.temp.use_jdbc_Metadata_defaults", configValues, true );
@H_403_5@解决方法
我在调试此问题时非常困难。每当我尝试与postgres建立连接时,都需要花费一分钟的时间。建立连接后,一切正常。我尝试禁用所有映射并且不加载任何映射,但是仍然需要花费很长时间来获取连接。我也尝试过禁用验证,没有区别。当我使用简单的简单JDBC连接时,它是瞬时的。Hibernate所做的事情需要花费大量时间,而我似乎无法缩小范围。任何输入,不胜感激!
Postgres驱动程序:
postgresql-9.1-901.jdbc4.jar
配置设置:
<hibernate-configuration> <session-factory> <!-- properties --> <property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property> <property name="connection.driver_class">org.postgresql.Driver</property> <property name="connection.url">jdbc:postgresql://xxxx.com:5432/xxxxx</property> <property name="connection.username">xxxxxxx</property> <property name="connection.password">xxxxxxx</property> </session-factory> </hibernate-configuration>
代码中的其他设置:
config.setProperty("hibernate.hbm2ddl.auto",hbm2ddlMode); //config.setProperty("hibernate.cache.use_query_cache","true"); config.setProperty("hibernate.cache.use_second_level_cache","true"); //config.setProperty("hibernate.cache.region.factory_class","net.sf.ehcache.hibernate.EhCacheRegionFactory"); config.setProperty("hibernate.cache.provider_class","org.hibernate.cache.EhCacheProvider"); //config.setProperty("hibernate.cache.provider_class","org.hibernate.cache.NoCacheProvider"); config.setProperty("hibernate.jdbc.fetch_size","100"); config.setProperty("hibernate.jdbc.batch_size","30"); config.setProperty("hibernate.jdbc.use_scrollable_resultset","true"); config.setProperty("hibernate.connection.provider_class","org.hibernate.connection.C3P0ConnectionProvider"); config.setProperty("hibernate.c3p0.acquire_increment","1"); config.setProperty("hibernate.c3p0.idle_test_period","0"); config.setProperty("hibernate.c3p0.min_size","1"); config.setProperty("hibernate.c3p0.max_size","2"); config.setProperty("hibernate.c3p0.timeout","0"); config.setProperty("javax.persistence.validation.mode","none");
这是发生延迟的代码段:
private SessionFactory buildSessionFactory() throws Exception { ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry(); //Building session takes a whole minute without mappings!!! sessionFactory = config.buildSessionFactory(serviceRegistry); validateConnection(); return sessionFactory; }
这是日志结果:
[main] 2012-04-09 10:40:32,823 110391 INFO C3P0ConnectionProvider - HHH000046: Connection properties: {user=hgaidb_test,password=****} [main] 2012-04-09 10:40:32,823 110391 INFO C3P0ConnectionProvider - HHH000006: Autocommit mode: false [main] 2012-04-09 10:40:34,100 111668 DEBUG JdbcServicesImpl - Database -> name : PostgreSQL version : 8.3.3 major : 8 minor : 3 [main] 2012-04-09 10:40:34,101 111669 DEBUG JdbcServicesImpl - Driver -> name : PostgreSQL Native Driver version : PostgreSQL 9.1 JDBC4 (build 901) major : 9 minor : 1 ******************************************************************************* // 1 MINUTE DELAY ******************************************************************************* [main] 2012-04-09 10:40:34,102 111670 DEBUG JdbcServicesImpl - JDBC version : 4. 0 [main] 2012-04-09 10:41:21,632 159200 INFO Dialect - HHH000400: Using dialect: org.hibernate.dialect.PostgreSQLDialect ******************************************************************************* [main] 2012-04-09 10:41:21,669 159237 INFO LobCreatorBuilder - HHH000424: Disab ling contextual LOB creation as createClob() method threw error : java.lang.refl ect.InvocationTargetException [main] 2012-04-09 10:41:21,814 159382 DEBUG SettingsFactory - Automatic flush du ring beforeCompletion(): disabled [main] 2012-04-09 10:41:21,814 159382 DEBUG SettingsFactory - Automatic session close at end of transaction: disabled [main] 2012-04-09 10:41:21,815 159383 DEBUG SettingsFactory - JDBC batch size: 3 0 [main] 2012-04-09 10:41:21,816 159384 DEBUG SettingsFactory - JDBC batch updates for versioned data: disabled [main] 2012-04-09 10:41:21,816 159384 DEBUG SettingsFactory - Scrollable result sets: enabled [main] 2012-04-09 10:41:21,817 159385 DEBUG SettingsFactory - Wrap result sets: disabled [main] 2012-04-09 10:41:21,818 159386 DEBUG SettingsFactory - JDBC3 getGenerated Keys(): enabled [main] 2012-04-09 10:41:21,818 159386 DEBUG SettingsFactory - JDBC result set fe tch size: 100 [main] 2012-04-09 10:41:21,819 159387 DEBUG SettingsFactory - Connection release mode: auto [main] 2012-04-09 10:41:21,819 159387 INFO TransactionFactoryInitiator - HHH000 399: Using default transaction strategy (direct JDBC transactions) [main] 2012-04-09 10:41:21,844 159412 DEBUG SettingsFactory - Default batch fetc h size: 1 [main] 2012-04-09 10:41:21,844 159412 DEBUG SettingsFactory - Generate SQL with comments: disabled [main] 2012-04-09 10:41:21,845 159413 DEBUG SettingsFactory - Order SQL updates by primary key: disabled [main] 2012-04-09 10:41:21,846 159414 DEBUG SettingsFactory - Order SQL inserts for batching: disabled [main] 2012-04-09 10:41:21,846 159414 DEBUG SettingsFactory - Query translator: org.hibernate.hql.internal.ast.ASTQueryTranslatorFactory [main] 2012-04-09 10:41:21,867 159435 INFO ASTQueryTranslatorFactory - HHH00039 7: Using ASTQueryTranslatorFactory [main] 2012-04-09 10:41:21,867 159435 DEBUG SettingsFactory - Query language sub stitutions: {} [main] 2012-04-09 10:41:21,867 159435 DEBUG SettingsFactory - JPA-QL strict comp liance: disabled [main] 2012-04-09 10:41:21,868 159436 DEBUG SettingsFactory - Second-level cache : enabled [main] 2012-04-09 10:41:21,868 159436 DEBUG SettingsFactory - Query cache: disab led [main] 2012-04-09 10:41:21,869 159437 DEBUG SettingsFactory - Cache region facto ry : org.hibernate.cache.internal.NoCachingRegionFactory [main] 2012-04-09 10:41:21,872 159440 DEBUG SettingsFactory - org.hibernate.cach e.internal.NoCachingRegionFactory did not provide constructor accepting java.uti l.Properties; attempting no-arg constructor. [main] 2012-04-09 10:41:21,873 159441 DEBUG SettingsFactory - Optimize cache for minimal puts: disabled [main] 2012-04-09 10:41:21,873 159441 DEBUG SettingsFactory - Structured second- level cache entries: disabled [main] 2012-04-09 10:41:21,873 159441 DEBUG SettingsFactory - Statistics: disabl ed [main] 2012-04-09 10:41:21,874 159442 DEBUG SettingsFactory - Deleted entity syn thetic identifier rollback: disabled [main] 2012-04-09 10:41:21,874 159442 DEBUG SettingsFactory - Default entity-mod e: pojo [main] 2012-04-09 10:41:21,875 159443 DEBUG SettingsFactory - Named query checki ng : enabled [main] 2012-04-09 10:41:21,875 159443 DEBUG SettingsFactory - Check Nullability in Core (should be disabled when Bean Validation is on): enabled [main] 2012-04-09 10:41:21,876 159444 DEBUG SettingsFactory - multi-tenancy stra tegy : NONE
我对此进行了更多的研究,逐步调试器。我的类路径中没有所有源代码,但仍然可以看到变量。等待一分钟后,Hibernate正在查询pg_catalog.pg_type表:
[SELECT typname FROM pg_catalog.pg_type WHERE oid =,]
107 // 'hibernate.temp.use_jdbc_Metadata_defaults' is a temporary magic value. 108 // The need for it is intended to be alleviated with future development, thus it is 109 // not defined as an Environment constant... 110 // 111 // it is used to control whether we should consult the JDBC Metadata to determine 112 // certain Settings default values; it is useful to *not* do this when the database 113 // may not be available (mainly in tools usage). 114 boolean useJdbcMetadata = ConfigurationHelper.getBoolean( "hibernate.temp.use_jdbc_Metadata_defaults", configValues, true );
@H_403_5@解决方法
我在调试此问题时非常困难。每当我尝试与postgres建立连接时,都需要花费一分钟的时间。建立连接后,一切正常。我尝试禁用所有映射并且不加载任何映射,但是仍然需要花费很长时间来获取连接。我也尝试过禁用验证,没有区别。当我使用简单的简单JDBC连接时,它是瞬时的。Hibernate所做的事情需要花费大量时间,而我似乎无法缩小范围。任何输入,不胜感激!
Postgres驱动程序:
postgresql-9.1-901.jdbc4.jar
配置设置:
<hibernate-configuration> <session-factory> <!-- properties --> <property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property> <property name="connection.driver_class">org.postgresql.Driver</property> <property name="connection.url">jdbc:postgresql://xxxx.com:5432/xxxxx</property> <property name="connection.username">xxxxxxx</property> <property name="connection.password">xxxxxxx</property> </session-factory> </hibernate-configuration>
代码中的其他设置:
config.setProperty("hibernate.hbm2ddl.auto",hbm2ddlMode); //config.setProperty("hibernate.cache.use_query_cache","true"); config.setProperty("hibernate.cache.use_second_level_cache","true"); //config.setProperty("hibernate.cache.region.factory_class","net.sf.ehcache.hibernate.EhCacheRegionFactory"); config.setProperty("hibernate.cache.provider_class","org.hibernate.cache.EhCacheProvider"); //config.setProperty("hibernate.cache.provider_class","org.hibernate.cache.NoCacheProvider"); config.setProperty("hibernate.jdbc.fetch_size","100"); config.setProperty("hibernate.jdbc.batch_size","30"); config.setProperty("hibernate.jdbc.use_scrollable_resultset","true"); config.setProperty("hibernate.connection.provider_class","org.hibernate.connection.C3P0ConnectionProvider"); config.setProperty("hibernate.c3p0.acquire_increment","1"); config.setProperty("hibernate.c3p0.idle_test_period","0"); config.setProperty("hibernate.c3p0.min_size","1"); config.setProperty("hibernate.c3p0.max_size","2"); config.setProperty("hibernate.c3p0.timeout","0"); config.setProperty("javax.persistence.validation.mode","none");
这是发生延迟的代码段:
private SessionFactory buildSessionFactory() throws Exception { ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry(); //Building session takes a whole minute without mappings!!! sessionFactory = config.buildSessionFactory(serviceRegistry); validateConnection(); return sessionFactory; }
这是日志结果:
[main] 2012-04-09 10:40:32,823 110391 INFO C3P0ConnectionProvider - HHH000046: Connection properties: {user=hgaidb_test,password=****} [main] 2012-04-09 10:40:32,823 110391 INFO C3P0ConnectionProvider - HHH000006: Autocommit mode: false [main] 2012-04-09 10:40:34,100 111668 DEBUG JdbcServicesImpl - Database -> name : PostgreSQL version : 8.3.3 major : 8 minor : 3 [main] 2012-04-09 10:40:34,101 111669 DEBUG JdbcServicesImpl - Driver -> name : PostgreSQL Native Driver version : PostgreSQL 9.1 JDBC4 (build 901) major : 9 minor : 1 ******************************************************************************* // 1 MINUTE DELAY ******************************************************************************* [main] 2012-04-09 10:40:34,102 111670 DEBUG JdbcServicesImpl - JDBC version : 4. 0 [main] 2012-04-09 10:41:21,632 159200 INFO Dialect - HHH000400: Using dialect: org.hibernate.dialect.PostgreSQLDialect ******************************************************************************* [main] 2012-04-09 10:41:21,669 159237 INFO LobCreatorBuilder - HHH000424: Disab ling contextual LOB creation as createClob() method threw error : java.lang.refl ect.InvocationTargetException [main] 2012-04-09 10:41:21,814 159382 DEBUG SettingsFactory - Automatic flush du ring beforeCompletion(): disabled [main] 2012-04-09 10:41:21,814 159382 DEBUG SettingsFactory - Automatic session close at end of transaction: disabled [main] 2012-04-09 10:41:21,815 159383 DEBUG SettingsFactory - JDBC batch size: 3 0 [main] 2012-04-09 10:41:21,816 159384 DEBUG SettingsFactory - JDBC batch updates for versioned data: disabled [main] 2012-04-09 10:41:21,816 159384 DEBUG SettingsFactory - Scrollable result sets: enabled [main] 2012-04-09 10:41:21,817 159385 DEBUG SettingsFactory - Wrap result sets: disabled [main] 2012-04-09 10:41:21,818 159386 DEBUG SettingsFactory - JDBC3 getGenerated Keys(): enabled [main] 2012-04-09 10:41:21,818 159386 DEBUG SettingsFactory - JDBC result set fe tch size: 100 [main] 2012-04-09 10:41:21,819 159387 DEBUG SettingsFactory - Connection release mode: auto [main] 2012-04-09 10:41:21,819 159387 INFO TransactionFactoryInitiator - HHH000 399: Using default transaction strategy (direct JDBC transactions) [main] 2012-04-09 10:41:21,844 159412 DEBUG SettingsFactory - Default batch fetc h size: 1 [main] 2012-04-09 10:41:21,844 159412 DEBUG SettingsFactory - Generate SQL with comments: disabled [main] 2012-04-09 10:41:21,845 159413 DEBUG SettingsFactory - Order SQL updates by primary key: disabled [main] 2012-04-09 10:41:21,846 159414 DEBUG SettingsFactory - Order SQL inserts for batching: disabled [main] 2012-04-09 10:41:21,846 159414 DEBUG SettingsFactory - Query translator: org.hibernate.hql.internal.ast.ASTQueryTranslatorFactory [main] 2012-04-09 10:41:21,867 159435 INFO ASTQueryTranslatorFactory - HHH00039 7: Using ASTQueryTranslatorFactory [main] 2012-04-09 10:41:21,867 159435 DEBUG SettingsFactory - Query language sub stitutions: {} [main] 2012-04-09 10:41:21,867 159435 DEBUG SettingsFactory - JPA-QL strict comp liance: disabled [main] 2012-04-09 10:41:21,868 159436 DEBUG SettingsFactory - Second-level cache : enabled [main] 2012-04-09 10:41:21,868 159436 DEBUG SettingsFactory - Query cache: disab led [main] 2012-04-09 10:41:21,869 159437 DEBUG SettingsFactory - Cache region facto ry : org.hibernate.cache.internal.NoCachingRegionFactory [main] 2012-04-09 10:41:21,872 159440 DEBUG SettingsFactory - org.hibernate.cach e.internal.NoCachingRegionFactory did not provide constructor accepting java.uti l.Properties; attempting no-arg constructor. [main] 2012-04-09 10:41:21,873 159441 DEBUG SettingsFactory - Optimize cache for minimal puts: disabled [main] 2012-04-09 10:41:21,873 159441 DEBUG SettingsFactory - Structured second- level cache entries: disabled [main] 2012-04-09 10:41:21,873 159441 DEBUG SettingsFactory - Statistics: disabl ed [main] 2012-04-09 10:41:21,874 159442 DEBUG SettingsFactory - Deleted entity syn thetic identifier rollback: disabled [main] 2012-04-09 10:41:21,874 159442 DEBUG SettingsFactory - Default entity-mod e: pojo [main] 2012-04-09 10:41:21,875 159443 DEBUG SettingsFactory - Named query checki ng : enabled [main] 2012-04-09 10:41:21,875 159443 DEBUG SettingsFactory - Check Nullability in Core (should be disabled when Bean Validation is on): enabled [main] 2012-04-09 10:41:21,876 159444 DEBUG SettingsFactory - multi-tenancy stra tegy : NONE
我对此进行了更多的研究,逐步调试器。我的类路径中没有所有源代码,但仍然可以看到变量。等待一分钟后,Hibernate正在查询pg_catalog.pg_type表:
[SELECT typname FROM pg_catalog.pg_type WHERE oid =,]
postgresql-9.1-901.jdbc4.jar
<hibernate-configuration>
<session-factory>
<!-- properties -->
<property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property>
<property name="connection.driver_class">org.postgresql.Driver</property>
<property name="connection.url">jdbc:postgresql://xxxx.com:5432/xxxxx</property>
<property name="connection.username">xxxxxxx</property>
<property name="connection.password">xxxxxxx</property>
</session-factory>
</hibernate-configuration>
config.setProperty("hibernate.hbm2ddl.auto",hbm2ddlMode);
//config.setProperty("hibernate.cache.use_query_cache","true");
config.setProperty("hibernate.cache.use_second_level_cache","true");
//config.setProperty("hibernate.cache.region.factory_class","net.sf.ehcache.hibernate.EhCacheRegionFactory");
config.setProperty("hibernate.cache.provider_class","org.hibernate.cache.EhCacheProvider");
//config.setProperty("hibernate.cache.provider_class","org.hibernate.cache.NoCacheProvider");
config.setProperty("hibernate.jdbc.fetch_size","100");
config.setProperty("hibernate.jdbc.batch_size","30");
config.setProperty("hibernate.jdbc.use_scrollable_resultset","true");
config.setProperty("hibernate.connection.provider_class","org.hibernate.connection.C3P0ConnectionProvider");
config.setProperty("hibernate.c3p0.acquire_increment","1");
config.setProperty("hibernate.c3p0.idle_test_period","0");
config.setProperty("hibernate.c3p0.min_size","1");
config.setProperty("hibernate.c3p0.max_size","2");
config.setProperty("hibernate.c3p0.timeout","0");
config.setProperty("javax.persistence.validation.mode","none");
private SessionFactory buildSessionFactory() throws Exception {
ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();
//Building session takes a whole minute without mappings!!!
sessionFactory = config.buildSessionFactory(serviceRegistry);
validateConnection();
return sessionFactory;
}
[main] 2012-04-09 10:40:32,823 110391 INFO C3P0ConnectionProvider - HHH000046:
Connection properties: {user=hgaidb_test,password=****}
[main] 2012-04-09 10:40:32,823 110391 INFO C3P0ConnectionProvider - HHH000006:
Autocommit mode: false
[main] 2012-04-09 10:40:34,100 111668 DEBUG JdbcServicesImpl - Database ->
name : PostgreSQL
version : 8.3.3
major : 8
minor : 3
[main] 2012-04-09 10:40:34,101 111669 DEBUG JdbcServicesImpl - Driver ->
name : PostgreSQL Native Driver
version : PostgreSQL 9.1 JDBC4 (build 901)
major : 9
minor : 1
*******************************************************************************
// 1 MINUTE DELAY
*******************************************************************************
[main] 2012-04-09 10:40:34,102 111670 DEBUG JdbcServicesImpl - JDBC version : 4.
0
[main] 2012-04-09 10:41:21,632 159200 INFO Dialect - HHH000400: Using dialect:
org.hibernate.dialect.PostgreSQLDialect
*******************************************************************************
[main] 2012-04-09 10:41:21,669 159237 INFO LobCreatorBuilder - HHH000424: Disab
ling contextual LOB creation as createClob() method threw error : java.lang.refl
ect.InvocationTargetException
[main] 2012-04-09 10:41:21,814 159382 DEBUG SettingsFactory - Automatic flush du
ring beforeCompletion(): disabled
[main] 2012-04-09 10:41:21,814 159382 DEBUG SettingsFactory - Automatic session
close at end of transaction: disabled
[main] 2012-04-09 10:41:21,815 159383 DEBUG SettingsFactory - JDBC batch size: 3
0
[main] 2012-04-09 10:41:21,816 159384 DEBUG SettingsFactory - JDBC batch updates
for versioned data: disabled
[main] 2012-04-09 10:41:21,816 159384 DEBUG SettingsFactory - Scrollable result
sets: enabled
[main] 2012-04-09 10:41:21,817 159385 DEBUG SettingsFactory - Wrap result sets:
disabled
[main] 2012-04-09 10:41:21,818 159386 DEBUG SettingsFactory - JDBC3 getGenerated
Keys(): enabled
[main] 2012-04-09 10:41:21,818 159386 DEBUG SettingsFactory - JDBC result set fe
tch size: 100
[main] 2012-04-09 10:41:21,819 159387 DEBUG SettingsFactory - Connection release
mode: auto
[main] 2012-04-09 10:41:21,819 159387 INFO TransactionFactoryInitiator - HHH000
399: Using default transaction strategy (direct JDBC transactions)
[main] 2012-04-09 10:41:21,844 159412 DEBUG SettingsFactory - Default batch fetc
h size: 1
[main] 2012-04-09 10:41:21,844 159412 DEBUG SettingsFactory - Generate SQL with
comments: disabled
[main] 2012-04-09 10:41:21,845 159413 DEBUG SettingsFactory - Order SQL updates
by primary key: disabled
[main] 2012-04-09 10:41:21,846 159414 DEBUG SettingsFactory - Order SQL inserts
for batching: disabled
[main] 2012-04-09 10:41:21,846 159414 DEBUG SettingsFactory - Query translator:
org.hibernate.hql.internal.ast.ASTQueryTranslatorFactory
[main] 2012-04-09 10:41:21,867 159435 INFO ASTQueryTranslatorFactory - HHH00039
7: Using ASTQueryTranslatorFactory
[main] 2012-04-09 10:41:21,867 159435 DEBUG SettingsFactory - Query language sub
stitutions: {}
[main] 2012-04-09 10:41:21,867 159435 DEBUG SettingsFactory - JPA-QL strict comp
liance: disabled
[main] 2012-04-09 10:41:21,868 159436 DEBUG SettingsFactory - Second-level cache
: enabled
[main] 2012-04-09 10:41:21,868 159436 DEBUG SettingsFactory - Query cache: disab
led
[main] 2012-04-09 10:41:21,869 159437 DEBUG SettingsFactory - Cache region facto
ry : org.hibernate.cache.internal.NoCachingRegionFactory
[main] 2012-04-09 10:41:21,872 159440 DEBUG SettingsFactory - org.hibernate.cach
e.internal.NoCachingRegionFactory did not provide constructor accepting java.uti
l.Properties; attempting no-arg constructor.
[main] 2012-04-09 10:41:21,873 159441 DEBUG SettingsFactory - Optimize cache for
minimal puts: disabled
[main] 2012-04-09 10:41:21,873 159441 DEBUG SettingsFactory - Structured second-
level cache entries: disabled
[main] 2012-04-09 10:41:21,873 159441 DEBUG SettingsFactory - Statistics: disabl
ed
[main] 2012-04-09 10:41:21,874 159442 DEBUG SettingsFactory - Deleted entity syn
thetic identifier rollback: disabled
[main] 2012-04-09 10:41:21,874 159442 DEBUG SettingsFactory - Default entity-mod
e: pojo
[main] 2012-04-09 10:41:21,875 159443 DEBUG SettingsFactory - Named query checki
ng : enabled
[main] 2012-04-09 10:41:21,875 159443 DEBUG SettingsFactory - Check Nullability
in Core (should be disabled when Bean Validation is on): enabled
[main] 2012-04-09 10:41:21,876 159444 DEBUG SettingsFactory - multi-tenancy stra
tegy : NONE
立即连接!
我可以找到的唯一信息是在代码中:
我在调试此问题时非常困难。每当我尝试与postgres建立连接时,都需要花费一分钟的时间。建立连接后,一切正常。我尝试禁用所有映射并且不加载任何映射,但是仍然需要花费很长时间来获取连接。我也尝试过禁用验证,没有区别。当我使用简单的简单JDBC连接时,它是瞬时的。Hibernate所做的事情需要花费大量时间,而我似乎无法缩小范围。任何输入,不胜感激!
Postgres驱动程序:
配置设置:
代码中的其他设置:
这是发生延迟的代码段:
这是日志结果:
我对此进行了更多的研究,逐步调试器。我的类路径中没有所有源代码,但仍然可以看到变量。等待一分钟后,Hibernate正在查询pg_catalog.pg_type表:
[SELECT typname FROM pg_catalog.pg_type WHERE oid =,]
立即连接!
我可以找到的唯一信息是在代码中:
107 // 'hibernate.temp.use_jdbc_Metadata_defaults' is a temporary magic value. 108 // The need for it is intended to be alleviated with future development, thus it is 109 // not defined as an Environment constant... 110 // 111 // it is used to control whether we should consult the JDBC Metadata to determine 112 // certain Settings default values; it is useful to *not* do this when the database 113 // may not be available (mainly in tools usage). 114 boolean useJdbcMetadata = ConfigurationHelper.getBoolean( "hibernate.temp.use_jdbc_Metadata_defaults", configValues, true );
@H_403_5@解决方法
我在调试此问题时非常困难。每当我尝试与postgres建立连接时,都需要花费一分钟的时间。建立连接后,一切正常。我尝试禁用所有映射并且不加载任何映射,但是仍然需要花费很长时间来获取连接。我也尝试过禁用验证,没有区别。当我使用简单的简单JDBC连接时,它是瞬时的。Hibernate所做的事情需要花费大量时间,而我似乎无法缩小范围。任何输入,不胜感激!
Postgres驱动程序:
postgresql-9.1-901.jdbc4.jar
配置设置:
<hibernate-configuration> <session-factory> <!-- properties --> <property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property> <property name="connection.driver_class">org.postgresql.Driver</property> <property name="connection.url">jdbc:postgresql://xxxx.com:5432/xxxxx</property> <property name="connection.username">xxxxxxx</property> <property name="connection.password">xxxxxxx</property> </session-factory> </hibernate-configuration>
代码中的其他设置:
config.setProperty("hibernate.hbm2ddl.auto",hbm2ddlMode); //config.setProperty("hibernate.cache.use_query_cache","true"); config.setProperty("hibernate.cache.use_second_level_cache","true"); //config.setProperty("hibernate.cache.region.factory_class","net.sf.ehcache.hibernate.EhCacheRegionFactory"); config.setProperty("hibernate.cache.provider_class","org.hibernate.cache.EhCacheProvider"); //config.setProperty("hibernate.cache.provider_class","org.hibernate.cache.NoCacheProvider"); config.setProperty("hibernate.jdbc.fetch_size","100"); config.setProperty("hibernate.jdbc.batch_size","30"); config.setProperty("hibernate.jdbc.use_scrollable_resultset","true"); config.setProperty("hibernate.connection.provider_class","org.hibernate.connection.C3P0ConnectionProvider"); config.setProperty("hibernate.c3p0.acquire_increment","1"); config.setProperty("hibernate.c3p0.idle_test_period","0"); config.setProperty("hibernate.c3p0.min_size","1"); config.setProperty("hibernate.c3p0.max_size","2"); config.setProperty("hibernate.c3p0.timeout","0"); config.setProperty("javax.persistence.validation.mode","none");
这是发生延迟的代码段:
private SessionFactory buildSessionFactory() throws Exception { ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry(); //Building session takes a whole minute without mappings!!! sessionFactory = config.buildSessionFactory(serviceRegistry); validateConnection(); return sessionFactory; }
这是日志结果:
[main] 2012-04-09 10:40:32,823 110391 INFO C3P0ConnectionProvider - HHH000046: Connection properties: {user=hgaidb_test,password=****} [main] 2012-04-09 10:40:32,823 110391 INFO C3P0ConnectionProvider - HHH000006: Autocommit mode: false [main] 2012-04-09 10:40:34,100 111668 DEBUG JdbcServicesImpl - Database -> name : PostgreSQL version : 8.3.3 major : 8 minor : 3 [main] 2012-04-09 10:40:34,101 111669 DEBUG JdbcServicesImpl - Driver -> name : PostgreSQL Native Driver version : PostgreSQL 9.1 JDBC4 (build 901) major : 9 minor : 1 ******************************************************************************* // 1 MINUTE DELAY ******************************************************************************* [main] 2012-04-09 10:40:34,102 111670 DEBUG JdbcServicesImpl - JDBC version : 4. 0 [main] 2012-04-09 10:41:21,632 159200 INFO Dialect - HHH000400: Using dialect: org.hibernate.dialect.PostgreSQLDialect ******************************************************************************* [main] 2012-04-09 10:41:21,669 159237 INFO LobCreatorBuilder - HHH000424: Disab ling contextual LOB creation as createClob() method threw error : java.lang.refl ect.InvocationTargetException [main] 2012-04-09 10:41:21,814 159382 DEBUG SettingsFactory - Automatic flush du ring beforeCompletion(): disabled [main] 2012-04-09 10:41:21,814 159382 DEBUG SettingsFactory - Automatic session close at end of transaction: disabled [main] 2012-04-09 10:41:21,815 159383 DEBUG SettingsFactory - JDBC batch size: 3 0 [main] 2012-04-09 10:41:21,816 159384 DEBUG SettingsFactory - JDBC batch updates for versioned data: disabled [main] 2012-04-09 10:41:21,816 159384 DEBUG SettingsFactory - Scrollable result sets: enabled [main] 2012-04-09 10:41:21,817 159385 DEBUG SettingsFactory - Wrap result sets: disabled [main] 2012-04-09 10:41:21,818 159386 DEBUG SettingsFactory - JDBC3 getGenerated Keys(): enabled [main] 2012-04-09 10:41:21,818 159386 DEBUG SettingsFactory - JDBC result set fe tch size: 100 [main] 2012-04-09 10:41:21,819 159387 DEBUG SettingsFactory - Connection release mode: auto [main] 2012-04-09 10:41:21,819 159387 INFO TransactionFactoryInitiator - HHH000 399: Using default transaction strategy (direct JDBC transactions) [main] 2012-04-09 10:41:21,844 159412 DEBUG SettingsFactory - Default batch fetc h size: 1 [main] 2012-04-09 10:41:21,844 159412 DEBUG SettingsFactory - Generate SQL with comments: disabled [main] 2012-04-09 10:41:21,845 159413 DEBUG SettingsFactory - Order SQL updates by primary key: disabled [main] 2012-04-09 10:41:21,846 159414 DEBUG SettingsFactory - Order SQL inserts for batching: disabled [main] 2012-04-09 10:41:21,846 159414 DEBUG SettingsFactory - Query translator: org.hibernate.hql.internal.ast.ASTQueryTranslatorFactory [main] 2012-04-09 10:41:21,867 159435 INFO ASTQueryTranslatorFactory - HHH00039 7: Using ASTQueryTranslatorFactory [main] 2012-04-09 10:41:21,867 159435 DEBUG SettingsFactory - Query language sub stitutions: {} [main] 2012-04-09 10:41:21,867 159435 DEBUG SettingsFactory - JPA-QL strict comp liance: disabled [main] 2012-04-09 10:41:21,868 159436 DEBUG SettingsFactory - Second-level cache : enabled [main] 2012-04-09 10:41:21,868 159436 DEBUG SettingsFactory - Query cache: disab led [main] 2012-04-09 10:41:21,869 159437 DEBUG SettingsFactory - Cache region facto ry : org.hibernate.cache.internal.NoCachingRegionFactory [main] 2012-04-09 10:41:21,872 159440 DEBUG SettingsFactory - org.hibernate.cach e.internal.NoCachingRegionFactory did not provide constructor accepting java.uti l.Properties; attempting no-arg constructor. [main] 2012-04-09 10:41:21,873 159441 DEBUG SettingsFactory - Optimize cache for minimal puts: disabled [main] 2012-04-09 10:41:21,873 159441 DEBUG SettingsFactory - Structured second- level cache entries: disabled [main] 2012-04-09 10:41:21,873 159441 DEBUG SettingsFactory - Statistics: disabl ed [main] 2012-04-09 10:41:21,874 159442 DEBUG SettingsFactory - Deleted entity syn thetic identifier rollback: disabled [main] 2012-04-09 10:41:21,874 159442 DEBUG SettingsFactory - Default entity-mod e: pojo [main] 2012-04-09 10:41:21,875 159443 DEBUG SettingsFactory - Named query checki ng : enabled [main] 2012-04-09 10:41:21,875 159443 DEBUG SettingsFactory - Check Nullability in Core (should be disabled when Bean Validation is on): enabled [main] 2012-04-09 10:41:21,876 159444 DEBUG SettingsFactory - multi-tenancy stra tegy : NONE
我对此进行了更多的研究,逐步调试器。我的类路径中没有所有源代码,但仍然可以看到变量。等待一分钟后,Hibernate正在查询pg_catalog.pg_type表:
[SELECT typname FROM pg_catalog.pg_type WHERE oid =,]
postgresql-9.1-901.jdbc4.jar
<hibernate-configuration>
<session-factory>
<!-- properties -->
<property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property>
<property name="connection.driver_class">org.postgresql.Driver</property>
<property name="connection.url">jdbc:postgresql://xxxx.com:5432/xxxxx</property>
<property name="connection.username">xxxxxxx</property>
<property name="connection.password">xxxxxxx</property>
</session-factory>
</hibernate-configuration>
config.setProperty("hibernate.hbm2ddl.auto",hbm2ddlMode);
//config.setProperty("hibernate.cache.use_query_cache","true");
config.setProperty("hibernate.cache.use_second_level_cache","true");
//config.setProperty("hibernate.cache.region.factory_class","net.sf.ehcache.hibernate.EhCacheRegionFactory");
config.setProperty("hibernate.cache.provider_class","org.hibernate.cache.EhCacheProvider");
//config.setProperty("hibernate.cache.provider_class","org.hibernate.cache.NoCacheProvider");
config.setProperty("hibernate.jdbc.fetch_size","100");
config.setProperty("hibernate.jdbc.batch_size","30");
config.setProperty("hibernate.jdbc.use_scrollable_resultset","true");
config.setProperty("hibernate.connection.provider_class","org.hibernate.connection.C3P0ConnectionProvider");
config.setProperty("hibernate.c3p0.acquire_increment","1");
config.setProperty("hibernate.c3p0.idle_test_period","0");
config.setProperty("hibernate.c3p0.min_size","1");
config.setProperty("hibernate.c3p0.max_size","2");
config.setProperty("hibernate.c3p0.timeout","0");
config.setProperty("javax.persistence.validation.mode","none");
private SessionFactory buildSessionFactory() throws Exception {
ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();
//Building session takes a whole minute without mappings!!!
sessionFactory = config.buildSessionFactory(serviceRegistry);
validateConnection();
return sessionFactory;
}
[main] 2012-04-09 10:40:32,823 110391 INFO C3P0ConnectionProvider - HHH000046:
Connection properties: {user=hgaidb_test,password=****}
[main] 2012-04-09 10:40:32,823 110391 INFO C3P0ConnectionProvider - HHH000006:
Autocommit mode: false
[main] 2012-04-09 10:40:34,100 111668 DEBUG JdbcServicesImpl - Database ->
name : PostgreSQL
version : 8.3.3
major : 8
minor : 3
[main] 2012-04-09 10:40:34,101 111669 DEBUG JdbcServicesImpl - Driver ->
name : PostgreSQL Native Driver
version : PostgreSQL 9.1 JDBC4 (build 901)
major : 9
minor : 1
*******************************************************************************
// 1 MINUTE DELAY
*******************************************************************************
[main] 2012-04-09 10:40:34,102 111670 DEBUG JdbcServicesImpl - JDBC version : 4.
0
[main] 2012-04-09 10:41:21,632 159200 INFO Dialect - HHH000400: Using dialect:
org.hibernate.dialect.PostgreSQLDialect
*******************************************************************************
[main] 2012-04-09 10:41:21,669 159237 INFO LobCreatorBuilder - HHH000424: Disab
ling contextual LOB creation as createClob() method threw error : java.lang.refl
ect.InvocationTargetException
[main] 2012-04-09 10:41:21,814 159382 DEBUG SettingsFactory - Automatic flush du
ring beforeCompletion(): disabled
[main] 2012-04-09 10:41:21,814 159382 DEBUG SettingsFactory - Automatic session
close at end of transaction: disabled
[main] 2012-04-09 10:41:21,815 159383 DEBUG SettingsFactory - JDBC batch size: 3
0
[main] 2012-04-09 10:41:21,816 159384 DEBUG SettingsFactory - JDBC batch updates
for versioned data: disabled
[main] 2012-04-09 10:41:21,816 159384 DEBUG SettingsFactory - Scrollable result
sets: enabled
[main] 2012-04-09 10:41:21,817 159385 DEBUG SettingsFactory - Wrap result sets:
disabled
[main] 2012-04-09 10:41:21,818 159386 DEBUG SettingsFactory - JDBC3 getGenerated
Keys(): enabled
[main] 2012-04-09 10:41:21,818 159386 DEBUG SettingsFactory - JDBC result set fe
tch size: 100
[main] 2012-04-09 10:41:21,819 159387 DEBUG SettingsFactory - Connection release
mode: auto
[main] 2012-04-09 10:41:21,819 159387 INFO TransactionFactoryInitiator - HHH000
399: Using default transaction strategy (direct JDBC transactions)
[main] 2012-04-09 10:41:21,844 159412 DEBUG SettingsFactory - Default batch fetc
h size: 1
[main] 2012-04-09 10:41:21,844 159412 DEBUG SettingsFactory - Generate SQL with
comments: disabled
[main] 2012-04-09 10:41:21,845 159413 DEBUG SettingsFactory - Order SQL updates
by primary key: disabled
[main] 2012-04-09 10:41:21,846 159414 DEBUG SettingsFactory - Order SQL inserts
for batching: disabled
[main] 2012-04-09 10:41:21,846 159414 DEBUG SettingsFactory - Query translator:
org.hibernate.hql.internal.ast.ASTQueryTranslatorFactory
[main] 2012-04-09 10:41:21,867 159435 INFO ASTQueryTranslatorFactory - HHH00039
7: Using ASTQueryTranslatorFactory
[main] 2012-04-09 10:41:21,867 159435 DEBUG SettingsFactory - Query language sub
stitutions: {}
[main] 2012-04-09 10:41:21,867 159435 DEBUG SettingsFactory - JPA-QL strict comp
liance: disabled
[main] 2012-04-09 10:41:21,868 159436 DEBUG SettingsFactory - Second-level cache
: enabled
[main] 2012-04-09 10:41:21,868 159436 DEBUG SettingsFactory - Query cache: disab
led
[main] 2012-04-09 10:41:21,869 159437 DEBUG SettingsFactory - Cache region facto
ry : org.hibernate.cache.internal.NoCachingRegionFactory
[main] 2012-04-09 10:41:21,872 159440 DEBUG SettingsFactory - org.hibernate.cach
e.internal.NoCachingRegionFactory did not provide constructor accepting java.uti
l.Properties; attempting no-arg constructor.
[main] 2012-04-09 10:41:21,873 159441 DEBUG SettingsFactory - Optimize cache for
minimal puts: disabled
[main] 2012-04-09 10:41:21,873 159441 DEBUG SettingsFactory - Structured second-
level cache entries: disabled
[main] 2012-04-09 10:41:21,873 159441 DEBUG SettingsFactory - Statistics: disabl
ed
[main] 2012-04-09 10:41:21,874 159442 DEBUG SettingsFactory - Deleted entity syn
thetic identifier rollback: disabled
[main] 2012-04-09 10:41:21,874 159442 DEBUG SettingsFactory - Default entity-mod
e: pojo
[main] 2012-04-09 10:41:21,875 159443 DEBUG SettingsFactory - Named query checki
ng : enabled
[main] 2012-04-09 10:41:21,875 159443 DEBUG SettingsFactory - Check Nullability
in Core (should be disabled when Bean Validation is on): enabled
[main] 2012-04-09 10:41:21,876 159444 DEBUG SettingsFactory - multi-tenancy stra
tegy : NONE
我在调试此问题时非常困难。每当我尝试与postgres建立连接时,都需要花费一分钟的时间。建立连接后,一切正常。我尝试禁用所有映射并且不加载任何映射,但是仍然需要花费很长时间来获取连接。我也尝试过禁用验证,没有区别。当我使用简单的简单JDBC连接时,它是瞬时的。Hibernate所做的事情需要花费大量时间,而我似乎无法缩小范围。任何输入,不胜感激!
Postgres驱动程序:
配置设置:
代码中的其他设置:
这是发生延迟的代码段:
这是日志结果:
我对此进行了更多的研究,逐步调试器。我的类路径中没有所有源代码,但仍然可以看到变量。等待一分钟后,Hibernate正在查询pg_catalog.pg_type表:
[SELECT typname FROM pg_catalog.pg_type WHERE oid =,]