JDBC 4.2 compatible driver providing comprehensive database connectivity for MariaDB and MySQL servers
—
Comprehensive configuration system with 100+ options for connection behavior, performance tuning, security settings, and high availability configuration.
Central configuration management for parsing JDBC URLs and properties into a Configuration object.
/**
* Configuration management for MariaDB connections
*/
public class Configuration {
/**
* Parse JDBC URL and properties into Configuration
* @param url JDBC connection URL
* @param props Additional properties
* @return Configuration instance or null if URL not supported
* @throws SQLException if parsing fails
*/
public static Configuration parse(String url, Properties props) throws SQLException;
// Basic connection properties
public String user();
public String password();
public String database();
public List<HostAddress> addresses();
public HaMode haMode();
// SSL/TLS configuration
public SslMode sslMode();
public String serverSslCert();
public String clientSslCert();
public String clientSslKey();
public String keyStore();
public String keyStorePassword();
public String keyStoreType();
public String trustStore();
public String trustStorePassword();
public String trustStoreType();
public String enabledSslCipherSuites();
public String enabledSslProtocolSuites();
// Connection behavior
public int connectTimeout();
public int socketTimeout();
public boolean tcpKeepAlive();
public int tcpAbortiveClose();
public String pipe();
public String localSocket();
public boolean tcpRcvBuf();
public boolean tcpSndBuf();
public boolean tcpNoDelay();
// Protocol options
public boolean allowMultiQueries();
public boolean useCompression();
public boolean allowLocalInfile();
public boolean useBulkStmts();
public boolean disablePipeline();
public boolean autocommit();
// Prepared statement options
public boolean cachePrepStmts();
public int prepStmtCacheSize();
public int prepStmtCacheSqlLimit();
public boolean useServerPrepStmts();
public boolean useAffectedRows();
// Connection pool options
public boolean pool();
public String poolName();
public int maxPoolSize();
public int minPoolSize();
public int maxIdleTime();
public boolean registerJmxPool();
public int poolValidMinDelay();
public boolean useResetConnection();
// Metadata options
public boolean blankTableNameMeta();
public boolean dumpQueriesOnException();
public boolean includeInnodbStatusInDeadlockExceptions();
public boolean includeThreadDumpInDeadlockExceptions();
public String servicePrincipalName();
public String defaultFetchSize();
public boolean tinyInt1isBit();
public boolean yearIsDateType();
public boolean createDatabaseIfNotExist();
// High availability options
public int retriesAllDown();
public String galeraAllowedState();
public boolean transactionReplay();
public int transactionReplaySize();
public String geometryDefaultType();
public String restrictedAuth();
public String initSql();
// Authentication and security
public String credentialType();
public String sessionVariables();
public String connectionAttributes();
public boolean useBatchMultiSend();
public boolean useBatchMultiSendNumber();
public boolean usePipelineAuth();
public boolean enableSkipMeta();
public boolean preserveInstants();ы
public boolean trackSchema();
}Usage Examples:
// Parse configuration from URL and properties
String url = "jdbc:mariadb://localhost:3306/mydb?useCompression=true&cachePrepStmts=true";
Properties props = new Properties();
props.setProperty("user", "myuser");
props.setProperty("password", "mypass");
props.setProperty("connectTimeout", "5000");
Configuration config = Configuration.parse(url, props);
// Access configuration values
String user = config.user();
boolean compression = config.useCompression();
int timeout = config.connectTimeout();
List<HostAddress> hosts = config.addresses();Core connection settings for establishing database connections.
// Basic connection URL
"jdbc:mariadb://localhost:3306/mydb"
// With basic authentication
"jdbc:mariadb://user:password@localhost:3306/mydb"
// Multiple hosts for high availability
"jdbc:mariadb://host1:3306,host2:3306,host3:3306/mydb"
// Connection timeout settings
"jdbc:mariadb://localhost:3306/mydb?connectTimeout=5000&socketTimeout=30000"Comprehensive SSL/TLS security configuration options.
// SSL configuration examples
// Disable SSL (not recommended for production)
"jdbc:mariadb://localhost:3306/mydb?sslMode=DISABLE"
// Enable SSL with trust mode (encryption only)
"jdbc:mariadb://localhost:3306/mydb?sslMode=TRUST"
// Verify certificate authority
"jdbc:mariadb://localhost:3306/mydb?sslMode=VERIFY_CA&serverSslCert=/path/to/ca-cert.pem"
// Full certificate and hostname verification
"jdbc:mariadb://localhost:3306/mydb?sslMode=VERIFY_FULL&trustStore=/path/to/truststore.jks&trustStorePassword=secret"
// Client certificate authentication
"jdbc:mariadb://localhost:3306/mydb?sslMode=VERIFY_FULL&" +
"keyStore=/path/to/keystore.jks&keyStorePassword=secret&" +
"trustStore=/path/to/truststore.jks&trustStorePassword=secret"
// Custom cipher suites and protocols
"jdbc:mariadb://localhost:3306/mydb?sslMode=VERIFY_FULL&" +
"enabledSslCipherSuites=TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256&" +
"enabledSslProtocolSuites=TLSv1.2,TLSv1.3"Settings for optimizing connection and query performance.
// Compression and bulk operations
"jdbc:mariadb://localhost:3306/mydb?useCompression=true&useBulkStmts=true"
// Prepared statement caching
"jdbc:mariadb://localhost:3306/mydb?cachePrepStmts=true&prepStmtCacheSize=250&prepStmtCacheSqlLimit=2048"
// Server-side prepared statements
"jdbc:mariadb://localhost:3306/mydb?useServerPrepStmts=true"
// TCP socket optimization
"jdbc:mariadb://localhost:3306/mydb?tcpKeepAlive=true&tcpNoDelay=true"
// Pipeline and batch optimizations
"jdbc:mariadb://localhost:3306/mydb?usePipelineAuth=true&useBatchMultiSend=true&disablePipeline=false"
// Connection reuse
"jdbc:mariadb://localhost:3306/mydb?useResetConnection=true"Built-in connection pooling configuration options.
// Enable connection pooling
"jdbc:mariadb://localhost:3306/mydb?pool=true"
// Full pool configuration
"jdbc:mariadb://localhost:3306/mydb?" +
"pool=true&" + // Enable pooling
"poolName=MyApplicationPool&" + // Pool name for monitoring
"maxPoolSize=25&" + // Maximum connections
"minPoolSize=5&" + // Minimum connections
"maxIdleTime=600&" + // Max idle time in seconds
"poolValidMinDelay=1000&" + // Validation delay in ms
"registerJmxPool=true" // Enable JMX monitoringConfiguration for multi-host deployments and failover scenarios.
// Replication setup
"jdbc:mariadb:replication://primary:3306,replica1:3306,replica2:3306/mydb"
// Load balancing
"jdbc:mariadb:loadbalance://host1:3306,host2:3306,host3:3306/mydb"
// Sequential failover
"jdbc:mariadb:sequential://host1:3306,host2:3306,host3:3306/mydb"
// Advanced host specification with types
"jdbc:mariadb://address=(host=primary)(port=3306)(type=primary)," +
"address=(host=replica1)(port=3306)(type=replica)," +
"address=(host=replica2)(port=3306)(type=replica)/mydb"
// Failover configuration
"jdbc:mariadb:replication://primary:3306,replica:3306/mydb?" +
"retriesAllDown=5&" + // Retry attempts when all hosts down
"galeraAllowedState=4&" + // Galera cluster state requirements
"transactionReplay=true&" + // Enable transaction replay on failover
"transactionReplaySize=64" // Transaction replay buffer sizeVarious authentication methods and credential management.
// Environment variable credentials
"jdbc:mariadb://localhost:3306/mydb?credentialType=ENV"
// AWS IAM authentication
"jdbc:mariadb://rds-endpoint:3306/mydb?credentialType=AWS_IAM"
// Properties file credentials
"jdbc:mariadb://localhost:3306/mydb?credentialType=PROPERTY&propertiesFile=/path/to/creds.properties"
// Restricted authentication plugins
"jdbc:mariadb://localhost:3306/mydb?restrictedAuth=mysql_native_password,caching_sha2_password"
// Session variables
"jdbc:mariadb://localhost:3306/mydb?sessionVariables=sql_mode='STRICT_TRANS_TABLES,NO_ZERO_DATE'"
// Connection attributes for monitoring
"jdbc:mariadb://localhost:3306/mydb?connectionAttributes=program_name:MyApp,version:1.0"Configuration for non-standard connection methods.
// Windows named pipe
"jdbc:mariadb://address=(pipe=\\\\.\\pipe\\mysql)/mydb"
// Unix domain socket
"jdbc:mariadb://address=(localSocket=/var/run/mysqld/mysqld.sock)/mydb"
// Multiple socket files for load balancing
"jdbc:mariadb://address=(localSocket=/var/run/mysqld/mysqld1.sock)," +
"address=(localSocket=/var/run/mysqld/mysqld2.sock)/mydb"Settings for metadata behavior and compatibility with different MySQL versions.
// Metadata configuration
"jdbc:mariadb://localhost:3306/mydb?" +
"blankTableNameMeta=true&" + // Return blank table names in metadata
"tinyInt1isBit=true&" + // Treat TINYINT(1) as boolean
"yearIsDateType=true&" + // Treat YEAR as Date type
"dumpQueriesOnException=true&" + // Include queries in exception messages
"includeInnodbStatusInDeadlockExceptions=true" // Include InnoDB status in deadlock exceptions
// Geometry type handling
"jdbc:mariadb://localhost:3306/mydb?geometryDefaultType=default"
// Database creation
"jdbc:mariadb://localhost:3306/mydb?createDatabaseIfNotExist=true"
// Schema tracking
"jdbc:mariadb://localhost:3306/mydb?trackSchema=true"Configuration options useful for development and troubleshooting.
// Debug and logging options
"jdbc:mariadb://localhost:3306/mydb?" +
"dumpQueriesOnException=true&" + // Show queries in exceptions
"includeInnodbStatusInDeadlockExceptions=true&" + // Detailed deadlock info
"includeThreadDumpInDeadlockExceptions=true&" + // Thread dump on deadlock
"log=true&" + // Enable query logging
"profileSql=true" // Enable SQL profiling// Recommended production configuration
String productionUrl = "jdbc:mariadb:replication://primary:3306,replica:3306/mydb?" +
// Security
"sslMode=VERIFY_FULL&" +
"trustStore=/path/to/truststore.jks&" +
"trustStorePassword=secret&" +
// Connection management
"connectTimeout=5000&" +
"socketTimeout=30000&" +
"tcpKeepAlive=true&" +
// Performance
"useCompression=true&" +
"cachePrepStmts=true&" +
"prepStmtCacheSize=250&" +
"useServerPrepStmts=true&" +
"useBulkStmts=true&" +
// High availability
"retriesAllDown=3&" +
"transactionReplay=true&" +
// Connection pooling
"pool=true&" +
"maxPoolSize=20&" +
"minPoolSize=5&" +
"maxIdleTime=600&" +
"registerJmxPool=true";// Development configuration with debugging
String devUrl = "jdbc:mariadb://localhost:3306/mydb?" +
// Basic auth (not for production)
"user=devuser&password=devpass&" +
// Debugging
"dumpQueriesOnException=true&" +
"includeInnodbStatusInDeadlockExceptions=true&" +
// Performance (relaxed for debugging)
"connectTimeout=10000&" +
"socketTimeout=60000&" +
// Create database if needed
"createDatabaseIfNotExist=true";Install with Tessl CLI
npx tessl i tessl/maven-org-mariadb-jdbc--mariadb-java-client