为什么需要委派连接或DBCP2中的innerMostDelegate进行数据库连接? 我看到了一些准备好的语句,并将Java对象创建为需要委托连接的oracle对象。但是我要达到目的,并且通过委派连接而不是普通连接可以完成哪些额外的工作。
答案 0 :(得分:3)
通常,您不需要它,除非您需要访问JDBC API中未定义但仅在特定于驱动程序的API中可用的功能。
连接池通常返回一个逻辑连接,该逻辑连接是到数据库的物理连接的包装(或代理)。通常,此逻辑连接仅公开JDBC API。如果您确实需要访问那些特定于驱动程序的功能,则需要“拆开”逻辑连接。鉴于这很容易导致连接泄漏或对连接的早期关闭进行不正确的处理,因此在执行此操作时需要小心,并确保关闭原始获取的连接,而不是解开的连接之一
对于DBCP,连接可能被多次包装。 getInnerMostDelegate()
方法将递归解包,直到到达不是DelegatingConnection
实例的连接为止。这很可能是物理连接。
所以