定制的数据源连接管理器
| Type | Name and description |
|---|---|
void |
closeConnection(java.sql.Connection conn)关闭数据库连接 |
void |
configure(Map configValues)初始化配置 |
java.sql.Connection |
getConnection()获取一个数据库连接 |
HibernateConfiguration |
getMappingContextConfiguration()获得 Hibernate 映射上下文配置 |
static String |
handleJdbcException(Exception e)处理几个已知(还有未知的)的 jdbc 异常,如果数据库连接断开,则尝试自动恢复 |
void |
logConnections(boolean println)打印数据库连接堆栈到 debug 日志中,以便问题分析。 |
void |
logConnections() |
void |
traceConnectionClose(java.sql.Connection conn) |
void |
traceConnectionGet() |
void |
traceConnectionGet(java.sql.Connection conn) |
| Methods inherited from class | Name |
|---|---|
class org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl |
org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl#setJndiService(org.hibernate.engine.jndi.spi.JndiService), org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl#isUnwrappableAs(Class), org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl#setDataSource(javax.sql.DataSource), org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl#getDataSource(), org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl#closeConnection(java.sql.Connection), org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl#supportsAggressiveRelease(), org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl#configure(Map), org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl#getConnection(), org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl#stop(), org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl#unwrap(Class), org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl#wait(long, int), org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl#wait(long), org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl#wait(), org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl#equals(Object), org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl#toString(), org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl#hashCode(), org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl#getClass(), org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl#notify(), org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl#notifyAll() |
class Object |
Object#wait(long, int), Object#wait(long), Object#wait(), Object#equals(Object), Object#toString(), Object#hashCode(), Object#getClass(), Object#notify(), Object#notifyAll() |
关闭数据库连接
初始化配置
获取一个数据库连接
获得 Hibernate 映射上下文配置
处理几个已知(还有未知的)的 jdbc 异常,如果数据库连接断开,则尝试自动恢复
e - JDBC 异常对象打印数据库连接堆栈到 debug 日志中,以便问题分析。
打印的日志中,可能有已关闭的连接信息(不是通过 closeConnection 关闭的,或者是根本没使用、也没关闭的LazyConnection),需要具体问题具体分析。
// 临时启用trace日志(可选)
LoggerFactory.getLogger('bropen.toolkit.orm.DatasourceConnectionProvider').level = Level.TRACE
// 执行以打印数据库连接的堆栈信息
ctx.sessionFactory.getConnectionProvider().logConnections(true)
// 输出当前的连接数
ctx.dataSourceUnproxied.getNumActive()
// 释放两个小时以上的数据库连接
DebugUtils.killDbConnections()
println - 是打印到console还是日志中,默认为false(打印到日志)