我无法确定为什么在我的Hibernate应用程序中初始化c3p0连接池需要2分钟。
这是在我的Hibernate.cfg.xml中:
<hibernate-configuration>
<session-factory>
<property name="connection.driver_class">org.postgresql.Driver</property>
<property name="connection.url"/>
<property name="connection.default_schema"/>
<property name="connection.username"/>
<property name="connection.password"/>
<property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property>
<property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property>
<property name="current_session_context_class">thread</property>
<property name="hibernate.c3p0.acquire_increment">1</property>
<property name="hibernate.c3p0.min_size">3</property>
<property name="hibernate.c3p0.max_size">10</property>
<property name="hibernate.c3p0.timeout">300</property>
<property name="hibernate.c3p0.max_statements">50</property>
<property name="hibernate.c3p0.idle_test_period">3000</property>
<property name="hibernate.c3p0."></property>
<property name="show_sql">true</property>
<property name="format_sql">false</property>
<property name="hbm2ddl.auto">create</property>
</session-factory>
</hibernate-configuration>
构建会话工厂时,连接设置在我的HibernateUtil文件中设置。
当测试中的第一个事务为openend时,池将初始化。之后,连接和查询数据库就可以正常工作,它在开始之前仅在以下行上挂起一会儿。我对输出进行了格式化,因为我认为问题可能出在这里提到的一种设置。:
INFO: Initializing c3p0 pool...
com.mchange.v2.c3p0.PoolBackedDataSource@30670080 [
connectionPoolDataSource -> com.mchange.v2.c3p0.WrapperConnectionPoolDataSource@ecfec4d0 [
acquireIncrement -> 1,
acquireRetryAttempts -> 30,
acquireRetryDelay -> 1000,
autoCommitOnClose -> false,
automaticTestTable -> null,
breakAfterAcquireFailure -> false,
checkoutTimeout -> 0,
connectionCustomizerClassName -> null,
connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester,
debugUnreturnedConnectionStackTraces -> false,
factoryClassLocation -> null,
forceIgnoreUnresolvedTransactions -> false,
identityToken -> I-REMOVED-THIS,
idleConnectionTestPeriod -> 3000,
initialPoolSize -> 3,
maxAdministrativeTaskTime -> 0,
maxConnectionAge -> 0,
maxIdleTime -> 300,
maxIdleTimeExcessConnections -> 0,
maxPoolSize -> 10,
maxStatements -> 50,
maxStatementsPerConnection -> 0,
minPoolSize -> 3,
nestedDataSource -> com.mchange.v2.c3p0.DriverManagerDataSource@b17e5c65 [
description -> null,
driverClass -> null,
factoryClassLocation -> null,
identityToken -> I-REMOVED-THIS,
jdbcUrl -> jdbc:postgresql://URL-TO-MY_DB,
properties -> {user=******, password=******, default_schema=}
],
preferredTestQuery -> null,
propertyCycle -> 0,
testConnectionOnCheckin -> false,
testConnectionOnCheckout -> false,
unreturnedConnectionTimeout -> 0,
usesTraditionalReflectiveProxies -> false;
userOverrides: {}
],
dataSourceName -> null,
factoryClassLocation -> null,
identityToken -> I-REMOVED-THIS,
numHelperThreads -> 3
]
这是我第一次使用Hibernate和c3p0,我期望启动池时它会更快吗?这是我的误解吗?
使用远程数据库和本地PostgreSQL实例之间没有区别。
(编辑:这是不正确的。在比较本地和远程数据库服务器时,我犯了一个错误。在本地,初始化几乎是立即的,而在远程则需要大约2分钟。)
Edit2:这是连接过程的日志。
在会话工厂的配置中,将属性Hibernate.temp.use_jdbc_metadata_defaults设置为false。这将指示Hibernate使用元数据方言而不是连接,这将导致启动缓慢。您还必须为驱动程序配置适当的方言。
问题内容: 我正在尝试为我的Web应用程序配置HikariCP。我没有使用任何框架,它是一个简单的简单Java Web应用程序。当我尝试通过普通的JDBC建立连接时,它成功了,并且能够执行所有数据库操作。 但是,当我尝试与连接池建立连接时,初始化后却收到了一个我不知道的异常。 下面是我正在使用的配置,我正在上下文侦听器中对其进行初始化。我在Java 1.7上运行,带有使用HikariCP Java
问题内容: 我在玩图书馆。我想从PostgreSQL数据库中检索数据。我得到的错误对我来说很奇怪。即使我手动配置CP: 我仍然看到错误。这是我的DAO: 该应用程序: 我的档案 错误: 我错过了什么? 问题答案: 要加载,应提前调用scalikejdbc-config 。 http://scalikejdbc.org/documentation/configuration.html#scalike
我使用postgresql+hibernate+c3p0进行池管理。 我可以看到,对于每个数据库查询,c3p0都在初始化,按照我的理解,这应该发生一次,而不是每个查询,否则有连接池有什么意义。如果我错了请改正。 相关信息:
我的项目的设置是- 用于持久化的Spring JDBC 下面是我的应用程序的日志,它捕获了与数据库的交互。 日志中有两件事是清楚的- 连接池仅在收到执行查询的第一个请求时才开始创建连接 一个包含4个连接的池需要将近30秒的时间来初始化 我的问题是- 如何配置DBCP在启动时自动初始化? 创建连接真的需要那么长时间吗? 注意:请不要建议切换到C3P0或Tomcat连接池。我知道这些解决方案。我更感兴
本文向大家介绍Angular 2 初始化,包括了Angular 2 初始化的使用技巧和注意事项,需要的朋友参考一下 示例 组件或指令属性已初始化时触发。 (在子指令之前)
问题内容: 要指定SQLite连接属性,请使用org.sqlite.SQLiteConfig,它的内容如下: 使用c3p0创建连接池的过程如下: 问题:如何创建结合了两者的数据源,让我设置诸如连接池的最大池大小和sqlite的同步模式之类的东西? 问题答案: 尝试 现在,数据源将是c3p0 PooledDataSource,它包装了已根据需要配置的SQLite未池化数据源。 请参阅C3P0的文档,