CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/maven-com-alibaba--druid

A high-performance JDBC connection pool and database monitoring library with SQL parsing and security features

Pending
Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

SecuritybySnyk

Pending

The risk profile of this skill

Overview
Eval results
Files

Druid

Druid is a high-performance JDBC connection pool and database monitoring library developed by Alibaba. It provides comprehensive database connectivity with built-in monitoring, SQL parsing, security features, and support for 50+ database types including MySQL, PostgreSQL, Oracle, SQL Server, and many others.

Package Information

  • Package Name: com.alibaba:druid
  • Package Type: Maven
  • Language: Java
  • Installation: Add to Maven pom.xml:
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.2.25</version>
</dependency>

Core Imports

// DataSource and connection pooling
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import com.alibaba.druid.pool.DruidDataSourceStatManager;
import com.alibaba.druid.pool.DruidPooledConnection;

// SQL parsing and processing
import com.alibaba.druid.sql.SQLUtils;
import com.alibaba.druid.sql.SQLUtils.FormatOption;
import com.alibaba.druid.sql.ast.SQLStatement;
import com.alibaba.druid.sql.ast.SQLExpr;
import com.alibaba.druid.sql.parser.SQLParserFeature;
import com.alibaba.druid.DbType;

// Security and filtering
import com.alibaba.druid.wall.WallFilter;
import com.alibaba.druid.wall.WallConfig;
import com.alibaba.druid.filter.Filter;

// Statistics and monitoring
import com.alibaba.druid.stat.DruidStatService;
import com.alibaba.druid.stat.JdbcSqlStat;
import com.alibaba.druid.stat.JdbcDataSourceStat;

// Common exceptions
import com.alibaba.druid.pool.GetConnectionTimeoutException;
import com.alibaba.druid.pool.DataSourceClosedException;
import com.alibaba.druid.wall.WallSQLException;
import com.alibaba.druid.sql.parser.ParserException;

Basic Usage

import com.alibaba.druid.pool.DruidDataSource;
import java.sql.Connection;
import java.sql.SQLException;

// Create and configure DataSource
DruidDataSource dataSource = new DruidDataSource();
dataSource.setUrl("jdbc:mysql://localhost:3306/test");
dataSource.setUsername("root");
dataSource.setPassword("password");
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");

// Configure connection pool
dataSource.setInitialSize(5);
dataSource.setMaxActive(10);
dataSource.setMinIdle(5);
dataSource.setMaxWait(60000);

// Get connection from pool
try (Connection conn = dataSource.getConnection()) {
    // Use connection for database operations
    System.out.println("Connected to database: " + conn.getMetaData().getDatabaseProductName());
} catch (SQLException e) {
    e.printStackTrace();
}

// Close DataSource when done
dataSource.close();

Architecture

Druid is organized into several key components:

  • Connection Pool: High-performance JDBC connection pooling with configurable parameters
  • SQL Parser: Complete SQL parsing engine supporting multiple database dialects
  • Filter System: Extensible filter framework for intercepting JDBC operations
  • Security Framework: SQL injection protection through WallFilter
  • Monitoring System: Real-time statistics and performance monitoring
  • Database Dialects: Support for 50+ database types with dialect-specific features

Capabilities

DataSource Configuration and Connection Pooling

Core functionality for creating and managing JDBC connection pools with extensive configuration options.

// Main DataSource implementation
class DruidDataSource extends DruidAbstractDataSource implements DataSource, DataSourceProxy, Serializable {
    public DruidDataSource();
    public DruidDataSource(boolean fairLock);
    
    // Configuration methods
    public void setUrl(String jdbcUrl);
    public void setUsername(String username);
    public void setPassword(String password);
    public void setDriverClassName(String driverClassName);
    public void setInitialSize(int initialSize);
    public void setMaxActive(int maxActive);
    public void setMinIdle(int minIdle);
    public void setMaxWait(long maxWaitMillis);
    
    // Connection management
    public Connection getConnection() throws SQLException;
    public Connection getConnection(String username, String password) throws SQLException;
    public void close();
}

// Factory for creating DataSource from Properties
class DruidDataSourceFactory {
    public static DataSource createDataSource(Properties properties) throws Exception;
    public static DataSource createDataSource(Map<String, Object> properties) throws Exception;
}

DataSource Configuration

SQL Processing and Parsing

Comprehensive SQL parsing engine supporting multiple database dialects with AST manipulation capabilities.

// Primary SQL utilities
class SQLUtils {
    // Parsing methods
    public static List<SQLStatement> parseStatements(String sql, String dbType, SQLParserFeature... features);
    public static SQLStatement parseSingleStatement(String sql, String dbType, SQLParserFeature... features);
    public static SQLStatement parseSingleStatement(String sql, String dbType, boolean keepComments);
    
    // Formatting methods
    public static String format(String sql, String dbType);
    public static String format(String sql, String dbType, SQLUtils.FormatOption... options);
    public static String toSQLString(SQLObject sqlObject, String dbType);
    
    // Validation methods
    public static boolean isValidName(String name);
}

// Database type enumeration supporting 50+ database types
enum DbType {
    // Major relational databases
    mysql, mariadb, oracle, postgresql, sqlserver, 
    // Cloud and big data platforms
    clickhouse, presto, hive, spark, snowflake, bigquery,
    // Other databases  
    h2, db2, sqlite, derby, hsqldb,
    // Specialized databases
    oceanbase_oracle, polardb, tidb, drds,
    // ... and 30+ more database types
}

SQL Processing

Security and SQL Injection Protection

Advanced security filtering system with SQL injection protection and configurable security policies.

// Main security filter
class WallFilter extends FilterEventAdapter implements Filter {
    public WallFilter();
    public WallFilter(WallProvider provider);
    
    public void setConfig(WallConfig config);
    public WallConfig getConfig();
    public void setDbType(String dbType);
}

// Security configuration
class WallConfig {
    public WallConfig();
    public WallConfig(String dbType);
    
    public void setSelectAllow(boolean selectAllow);
    public void setDeleteAllow(boolean deleteAllow);
    public void setUpdateAllow(boolean updateAllow);
    public void setInsertAllow(boolean insertAllow);
    public void setMultiStatementAllow(boolean multiStatementAllow);
}

Security Filtering

Monitoring and Statistics

Real-time performance monitoring and statistics collection for database operations.

// Main statistics service
class DruidStatService {
    public static DruidStatService getInstance();
    
    public Object getDataSourceStatDataList();
    public Object getSqlStatDataList(Integer dataSourceId);
    public Object getActiveConnectionStackTraceList();
    public void resetAll();
    public void logAndResetDataSource();
}

// DataSource statistics management
class DruidDataSourceStatManager {
    public static DruidDataSourceStatManager getInstance();
    
    public Set<DruidDataSourceStatValue> getDataSourceList();
    public DruidDataSourceStatValue getDataSourceStatValue(Integer identity);
}

Monitoring and Statistics

Exception Types

// Connection pool exceptions
class GetConnectionTimeoutException extends SQLException {
    public GetConnectionTimeoutException(String message);
    public GetConnectionTimeoutException(String message, Throwable cause);
}

class DataSourceClosedException extends SQLException {
    public DataSourceClosedException(String message);
}

// Security exceptions
class WallSQLException extends SQLException {
    public WallSQLException(String message);
    public WallSQLException(String message, Throwable cause);
}

// SQL processing exceptions
class ParserException extends RuntimeException {
    public ParserException(String message);
    public ParserException(String message, Throwable cause);
    public int getLine();
    public int getColumn();
}

class SQLParseException extends ParserException {
    public SQLParseException(String message);
    public SQLParseException(String message, Throwable cause);
}

// Core runtime exceptions  
class DruidRuntimeException extends RuntimeException {
    public DruidRuntimeException(String message);
    public DruidRuntimeException(String message, Throwable cause);
}

class FastsqlException extends RuntimeException {
    public FastsqlException(String message);
    public FastsqlException(String message, Throwable cause);
}

Database Support

Druid supports 50+ database types with dialect-specific parsing and features:

  • Relational: MySQL, PostgreSQL, Oracle, SQL Server, H2, Derby, HSQLDB, SQLite, DB2
  • Big Data: Hive, Spark SQL, Presto, ClickHouse, Impala, Kylin
  • Cloud: Amazon Redshift, Google BigQuery, Snowflake
  • NoSQL: Elasticsearch (SQL interface)
  • And many more: Phoenix, Calcite, Drill, Greenplum, etc.

Integration Support

Druid provides integration support for popular Java frameworks:

  • Spring Framework: DruidLobHandler, MBean integration
  • Jakarta EE: Servlet API compatibility
  • Hibernate: Connection provider integration
  • iBatis/MyBatis: DataSource configuration
  • Quartz: Job scheduling integration
Workspace
tessl
Visibility
Public
Created
Last updated
Describes
mavenpkg:maven/com.alibaba/druid@1.2.x
Publish Source
CLI
Badge
tessl/maven-com-alibaba--druid badge