or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

datasource-configuration.mdindex.mdmonitoring-statistics.mdsecurity-filtering.mdsql-processing.md
tile.json

tessl/maven-com-alibaba--druid

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

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
mavenpkg:maven/com.alibaba/druid@1.2.x

To install, run

npx @tessl/cli install tessl/maven-com-alibaba--druid@1.2.0

index.mddocs/

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