CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/maven-org-jooq--jooq-meta

Database metadata abstraction library for jOOQ's code generation system providing unified access to schema information across multiple database vendors

Pending
Overview
Eval results
Files

database-management.mddocs/

Database Connection and Management

Core database abstraction and connection management providing the entry point for all metadata operations in jOOQ-meta.

Capabilities

Database Factory

Creates database instances using factory methods for type-safe database abstraction.

/**
 * Creates a Database instance for the specified SQL dialect
 * Uses reflection to instantiate the appropriate Database class
 * and sets the dialect on the created instance
 * @param dialect - SQL dialect (POSTGRES, MYSQL, H2, etc.)
 * @returns Database instance for the specified dialect
 * @throws IllegalArgumentException if Database cannot be created
 */
static Database database(SQLDialect dialect);

/**
 * Gets the Database implementation class for a dialect
 * Maps SQL dialects to their corresponding Database implementation classes
 * Falls back to JDBCDatabase.class for unsupported dialects
 * 
 * Supported dialects include:
 * - CLICKHOUSE: ClickHouseDatabase
 * - CUBRID: CUBRIDDatabase  
 * - DERBY: DerbyDatabase
 * - DUCKDB: DuckDBDatabase
 * - FIREBIRD: FirebirdDatabase
 * - H2: H2Database
 * - HSQLDB: HSQLDBDatabase
 * - IGNITE: IgniteDatabase
 * - MARIADB: MariaDBDatabase
 * - MYSQL: MySQLDatabase
 * - POSTGRES: PostgresDatabase
 * - SQLITE: SQLiteDatabase
 * - TRINO: TrinoDatabase
 * - YUGABYTEDB: YugabyteDBDatabase
 * - DEFAULT: JDBCDatabase (fallback)
 * 
 * @param dialect - SQL dialect
 * @returns Class object for database implementation
 */
static Class<? extends Database> databaseClass(SQLDialect dialect);

Usage Examples:

import org.jooq.meta.Database;
import org.jooq.meta.Databases;
import org.jooq.SQLDialect;
import java.sql.Connection;

// Create database for PostgreSQL
Database database = Databases.database(SQLDialect.POSTGRES);

// Create and set connection separately
Connection conn = DriverManager.getConnection("jdbc:postgresql://localhost/db", "user", "pass");
Database database = Databases.database(SQLDialect.POSTGRES);
database.setConnection(conn);

// Get implementation class
Class<? extends Database> dbClass = Databases.databaseClass(SQLDialect.MYSQL);

Connection Management

Manages database connections for metadata extraction with proper resource handling.

/**
 * Sets the database connection for metadata operations
 * @param connection - JDBC connection to the database
 */
void setConnection(Connection connection);

/**
 * Gets the current database connection
 * @returns Current JDBC connection or null if not set
 */
Connection getConnection();

/**
 * Creates a jOOQ DSL context using the current connection
 * @returns DSLContext for executing queries
 */
DSLContext create();

/**
 * Closes the database and releases all resources
 * Must be called to prevent resource leaks
 */
void close();

Usage Examples:

import org.jooq.meta.Database;
import org.jooq.meta.postgres.PostgresDatabase;
import java.sql.Connection;
import java.sql.DriverManager;

try (Database database = new PostgresDatabase()) {
    // Set up connection
    Connection connection = DriverManager.getConnection(
        "jdbc:postgresql://localhost:5432/mydb", "username", "password");
    database.setConnection(connection);
    
    // Use database for metadata operations
    List<SchemaDefinition> schemas = database.getSchemata();
    
    // Database connection is available
    Connection conn = database.getConnection();
    
    // Create DSL context for queries
    DSLContext dsl = database.create();
    
} // Automatically closes and releases resources

Dialect Configuration

Configures database-specific behavior and SQL dialect handling.

/**
 * Gets the SQL dialect for this database
 * @returns Current SQL dialect
 */
SQLDialect getDialect();

/**
 * Sets the SQL dialect for this database
 * @param dialect - SQL dialect to use
 */
void setDialect(SQLDialect dialect);

/**
 * Checks if database supports unsigned types
 * @returns true if unsigned types are supported
 */
boolean supportsUnsignedTypes();

/**
 * Sets unsigned type support flag
 * @param supportsUnsignedTypes - Whether unsigned types are supported
 */
void setSupportsUnsignedTypes(boolean supportsUnsignedTypes);

Database Properties

Configuration of database-specific properties and options.

/**
 * Sets database properties for implementation-specific configuration
 * @param properties - Properties object with configuration
 */
void setProperties(Properties properties);

/**
 * Gets database properties
 * @returns Properties object with current configuration
 */
Properties getProperties();

/**
 * Sets base directory for file-based implementations
 * @param basedir - Base directory path
 */
void setBasedir(String basedir);

/**
 * Gets base directory for file-based implementations
 * @returns Base directory path
 */
String getBasedir();

Error Handling Configuration

Configures error handling behavior during metadata extraction.

/**
 * Sets error handling behavior
 * @param onError - Error handling strategy (FAIL, LOG, SILENT)
 */
void setOnError(OnError onError);

/**
 * Gets current error handling behavior
 * @returns Current error handling strategy
 */
OnError onError();

/**
 * Sets slow query logging threshold
 * @param logSlowQueriesAfterSeconds - Threshold in seconds
 */
void setLogSlowQueriesAfterSeconds(int logSlowQueriesAfterSeconds);

/**
 * Gets slow query logging threshold
 * @returns Threshold in seconds
 */
int getLogSlowQueriesAfterSeconds();

Types

enum OnError {
    /** Fail immediately on any error */
    FAIL,
    /** Log errors and continue processing */
    LOG,
    /** Ignore errors silently */
    SILENT
}

interface Database extends AutoCloseable {
    void setConnection(Connection connection);
    Connection getConnection();
    SQLDialect getDialect();
    void setDialect(SQLDialect dialect);
    DSLContext create();
    void setProperties(Properties properties);
    Properties getProperties();
    void close();
}

Usage Examples:

import org.jooq.meta.Database;
import org.jooq.meta.postgres.PostgresDatabase;
import org.jooq.meta.jaxb.OnError;
import java.util.Properties;

Database database = new PostgresDatabase();

// Configure error handling
database.setOnError(OnError.LOG);

// Set up properties
Properties props = new Properties();
props.setProperty("key", "value");
database.setProperties(props);

// Configure dialect-specific options
database.setSupportsUnsignedTypes(false);
database.setLogSlowQueriesAfterSeconds(5);

Install with Tessl CLI

npx tessl i tessl/maven-org-jooq--jooq-meta

docs

advanced-objects.md

configuration.md

constraints-relationships.md

database-implementations.md

database-management.md

index.md

schema-discovery.md

table-analysis.md

tile.json