package org.apache.kyuubi.engine.jdbc.session; import org.apache.commons.dbcp2.DelegatingConnection; import java.sql.Connection; import java.sql.SQLException; import java.util.Objects; /** * JDBC 包装类 *
 *
 * Created by zhenqin.
 * User: zhenqin
 * Date: 2026/2/11
 * Time: 10:18
 * Vendor: yiidata.com
 *
 * 
* * @author zhenqin */ public class JdbcConnectionWrapper extends DelegatingConnection implements JdbcConnection { /** * MySQL 等数据库支持的 connection Id */ private String connectionId; /** * 强制关闭,并且废弃的连接 */ private boolean validFlag = true; /** * 直接的连接 */ final Connection realConnection; /** * 代理的连接和直接的连接 * @param connection * @param realConnection */ public JdbcConnectionWrapper(Connection connection, Connection realConnection) { super(connection); this.realConnection = realConnection; } public String getConnectionId() { return connectionId; } public void setConnectionId(String connectionId) { this.connectionId = connectionId; } public boolean isValidFlag() { return validFlag; } public void setValidFlag(boolean validFlag) { this.validFlag = validFlag; } @Override public void directClose() { try { realConnection.close(); } catch (Exception ignore) {} } @Override public void close() throws SQLException { directClose(); super.close(); } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; JdbcConnectionWrapper that = (JdbcConnectionWrapper) o; return Objects.equals(getDelegate(), that.getDelegate()); } @Override public int hashCode() { return Objects.hash(getDelegate()); } }