JdbcConnectionWrapper.java 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. package org.apache.kyuubi.engine.jdbc.session;
  2. import org.apache.commons.dbcp2.DelegatingConnection;
  3. import java.sql.Connection;
  4. import java.sql.SQLException;
  5. import java.util.Objects;
  6. /**
  7. * JDBC 包装类
  8. * <pre>
  9. *
  10. * Created by zhenqin.
  11. * User: zhenqin
  12. * Date: 2026/2/11
  13. * Time: 10:18
  14. * Vendor: yiidata.com
  15. *
  16. * </pre>
  17. *
  18. * @author zhenqin
  19. */
  20. public class JdbcConnectionWrapper extends DelegatingConnection<Connection> implements JdbcConnection {
  21. /**
  22. * MySQL 等数据库支持的 connection Id
  23. */
  24. private String connectionId;
  25. /**
  26. * 强制关闭,并且废弃的连接
  27. */
  28. private boolean validFlag = true;
  29. /**
  30. * 直接的连接
  31. */
  32. final Connection realConnection;
  33. /**
  34. * 代理的连接和直接的连接
  35. * @param connection
  36. * @param realConnection
  37. */
  38. public JdbcConnectionWrapper(Connection connection, Connection realConnection) {
  39. super(connection);
  40. this.realConnection = realConnection;
  41. }
  42. public String getConnectionId() {
  43. return connectionId;
  44. }
  45. public void setConnectionId(String connectionId) {
  46. this.connectionId = connectionId;
  47. }
  48. public boolean isValidFlag() {
  49. return validFlag;
  50. }
  51. public void setValidFlag(boolean validFlag) {
  52. this.validFlag = validFlag;
  53. }
  54. @Override
  55. public void directClose() {
  56. try {
  57. realConnection.close();
  58. } catch (Exception ignore) {}
  59. }
  60. @Override
  61. public void close() throws SQLException {
  62. directClose();
  63. super.close();
  64. }
  65. @Override
  66. public boolean equals(Object o) {
  67. if (this == o) return true;
  68. if (o == null || getClass() != o.getClass()) return false;
  69. JdbcConnectionWrapper that = (JdbcConnectionWrapper) o;
  70. return Objects.equals(getDelegate(), that.getDelegate());
  71. }
  72. @Override
  73. public int hashCode() {
  74. return Objects.hash(getDelegate());
  75. }
  76. }