# gregorsomething/compilebaseconnector architecture

> Architecture diagram of the GitHub repository gregorsomething/compilebaseconnector, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/gregorsomething/compilebaseconnector
- Repository: https://github.com/gregorsomething/compilebaseconnector

## Overview

This is a Java JDBC repository code generator: developers declare repository interfaces with query and statement annotations, and a compile-time processor generates typed implementations. At runtime, RepositoryProvider instantiates those implementations against a Database, which executes prepared SQL through JDBC. README capabilities also include custom and complex result mapping, MariaDB/Postgres providers, repository initialization SQL, and optional transactions. The sampled code supports the processor, query mapping, parameter handling, provider, and database edges; statement and transaction wiring is only represented where documented or evident from the tree.

Main entry points: [`src/main/java/me/gregorsomething/database/processor/RepositoryProcessor.java`](https://github.com/gregorsomething/compilebaseconnector/blob/master/src/main/java/me/gregorsomething/database/processor/RepositoryProcessor.java) (Repository processor), [`src/main/java/me/gregorsomething/database/annotations/Repository.java`](https://github.com/gregorsomething/compilebaseconnector/blob/master/src/main/java/me/gregorsomething/database/annotations/Repository.java) (Repository interface), [`src/main/java/me/gregorsomething/database/processor/QuerySubProcessor.java`](https://github.com/gregorsomething/compilebaseconnector/blob/master/src/main/java/me/gregorsomething/database/processor/QuerySubProcessor.java) (Query processor), [`src/main/java/me/gregorsomething/database/processor/types/TypeMapperCodeGenerator.java`](https://github.com/gregorsomething/compilebaseconnector/blob/master/src/main/java/me/gregorsomething/database/processor/types/TypeMapperCodeGenerator.java) (Result mapping generator)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_declarations["Repository declarations"]
  node_repository_interface["Repository interface<br/>[Repository.java]"]
  node_query_annotation["Query annotation<br/>[Query.java]"]
  node_statement_annotation["Statement annotation<br/>[Statement.java]"]
  node_custom_types["Custom type readers<br/>[Repository.java]"]
end

subgraph group_generation["Compile-time generation"]
  node_processor["Repository processor"]
  node_query_processor["Query processor"]
  node_statement_processor["Statement processor"]
  node_parameters["SQL parameters"]
  node_mapping_generator["Result mapping generator"]
  node_type_resolver["Type mapper resolver"]
  node_complex_resolver["Complex type resolver"]
end

subgraph group_runtime["Runtime repositories"]
  node_generated_repo["Generated implementation"]
  node_repo_provider["Repository provider"]
  node_transactional_api["Transaction contracts<br/>[Transactional.java]"]
  node_transaction["Transaction<br/>[Transaction.java]"]
end

subgraph group_connectivity["Database connectivity"]
  node_database_api["Database API<br/>[Database.java]"]
  node_datasource_db["DataSource database"]
  node_maria_provider["MariaDB provider"]
  node_postgres_provider["Postgres provider"]
  node_transactional_db["Transactional database"]
  node_jdbc[("JDBC database")]
end

node_developer(("Repository developer"))

node_developer -->|"defines"| node_repository_interface
node_developer -->|"declares queries"| node_query_annotation
node_developer -->|"declares statements"| node_statement_annotation
node_repository_interface -->|"processed by"| node_processor
node_query_annotation -->|"annotates methods"| node_processor
node_statement_annotation -->|"annotates methods"| node_processor
node_processor -->|"dispatches queries"| node_query_processor
node_processor -->|"dispatches statements"| node_statement_processor
node_query_processor -->|"resolves placeholders"| node_parameters
node_statement_processor -->|"resolves placeholders"| node_parameters
node_query_processor -->|"generates mapping"| node_mapping_generator
node_mapping_generator -->|"looks up types"| node_type_resolver
node_mapping_generator -->|"resolves complex types"| node_complex_resolver
node_repository_interface -->|"configures readers"| node_custom_types
node_custom_types -->|"provides mappings"| node_type_resolver
node_processor -->|"writes implementation"| node_generated_repo
node_repo_provider -->|"instantiates"| node_generated_repo
node_repo_provider -->|"supplies database"| node_database_api
node_generated_repo -->|"executes SQL"| node_database_api
node_generated_repo -.->|"creates transactions"| node_transaction
node_transactional_api -.->|"enables transaction support"| node_processor
node_transaction -.->|"uses connection"| node_transactional_db
node_transactional_db -->|"executes SQL"| node_jdbc
node_maria_provider -->|"creates"| node_datasource_db
node_postgres_provider -->|"creates"| node_datasource_db
node_datasource_db -->|"uses JDBC"| node_jdbc
node_database_api -->|"queries and executes"| node_jdbc

click node_repository_interface "https://github.com/gregorsomething/compilebaseconnector/blob/master/src/main/java/me/gregorsomething/database/annotations/Repository.java"
click node_query_annotation "https://github.com/gregorsomething/compilebaseconnector/blob/master/src/main/java/me/gregorsomething/database/annotations/Query.java"
click node_statement_annotation "https://github.com/gregorsomething/compilebaseconnector/blob/master/src/main/java/me/gregorsomething/database/annotations/Statement.java"
click node_processor "https://github.com/gregorsomething/compilebaseconnector/blob/master/src/main/java/me/gregorsomething/database/processor/RepositoryProcessor.java"
click node_query_processor "https://github.com/gregorsomething/compilebaseconnector/blob/master/src/main/java/me/gregorsomething/database/processor/QuerySubProcessor.java"
click node_statement_processor "https://github.com/gregorsomething/compilebaseconnector/blob/master/src/main/java/me/gregorsomething/database/processor/StatementSubProcessor.java"
click node_parameters "https://github.com/gregorsomething/compilebaseconnector/blob/master/src/main/java/me/gregorsomething/database/processor/paramater/ParameterProcessor.java"
click node_mapping_generator "https://github.com/gregorsomething/compilebaseconnector/blob/master/src/main/java/me/gregorsomething/database/processor/types/TypeMapperCodeGenerator.java"
click node_type_resolver "https://github.com/gregorsomething/compilebaseconnector/blob/master/src/main/java/me/gregorsomething/database/processor/types/TypeMapperResolver.java"
click node_complex_resolver "https://github.com/gregorsomething/compilebaseconnector/blob/master/src/main/java/me/gregorsomething/database/processor/types/ComplexTypeResolver.java"
click node_generated_repo "https://github.com/gregorsomething/compilebaseconnector/blob/master/src/main/java/me/gregorsomething/database/processor/RepositoryProcessor.java"
click node_custom_types "https://github.com/gregorsomething/compilebaseconnector/blob/master/src/main/java/me/gregorsomething/database/annotations/Repository.java"
click node_repo_provider "https://github.com/gregorsomething/compilebaseconnector/blob/master/src/main/java/me/gregorsomething/database/RepositoryProvider.java"
click node_database_api "https://github.com/gregorsomething/compilebaseconnector/blob/master/src/main/java/me/gregorsomething/database/Database.java"
click node_datasource_db "https://github.com/gregorsomething/compilebaseconnector/blob/master/src/main/java/me/gregorsomething/database/DataSourceDatabase.java"
click node_maria_provider "https://github.com/gregorsomething/compilebaseconnector/blob/master/src/main/java/me/gregorsomething/database/MariaDBDatabaseProvider.java"
click node_postgres_provider "https://github.com/gregorsomething/compilebaseconnector/blob/master/src/main/java/me/gregorsomething/database/PostgresDatabaseProvider.java"
click node_transactional_api "https://github.com/gregorsomething/compilebaseconnector/blob/master/src/main/java/me/gregorsomething/database/Transactional.java"
click node_transaction "https://github.com/gregorsomething/compilebaseconnector/blob/master/src/main/java/me/gregorsomething/database/Transaction.java"
click node_transactional_db "https://github.com/gregorsomething/compilebaseconnector/blob/master/src/main/java/me/gregorsomething/database/TransactionalDatabase.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_repository_interface,node_query_annotation,node_statement_annotation,node_custom_types toneBlue
class node_processor,node_query_processor,node_statement_processor,node_parameters,node_mapping_generator,node_type_resolver,node_complex_resolver toneAmber
class node_generated_repo,node_repo_provider,node_transactional_api,node_transaction toneMint
class node_database_api,node_datasource_db,node_maria_provider,node_postgres_provider,node_transactional_db,node_jdbc toneRose
class node_developer toneIndigo
```

## Components

### Repository declarations

- [Repository interface](https://github.com/gregorsomething/compilebaseconnector/blob/master/src/main/java/me/gregorsomething/database/annotations/Repository.java): `src/main/java/me/gregorsomething/database/annotations/Repository.java`
- [Query annotation](https://github.com/gregorsomething/compilebaseconnector/blob/master/src/main/java/me/gregorsomething/database/annotations/Query.java): `src/main/java/me/gregorsomething/database/annotations/Query.java`
- [Statement annotation](https://github.com/gregorsomething/compilebaseconnector/blob/master/src/main/java/me/gregorsomething/database/annotations/Statement.java): `src/main/java/me/gregorsomething/database/annotations/Statement.java`
- [Custom type readers](https://github.com/gregorsomething/compilebaseconnector/blob/master/src/main/java/me/gregorsomething/database/annotations/Repository.java): `src/main/java/me/gregorsomething/database/annotations/Repository.java`

### Compile-time generation

- [Repository processor](https://github.com/gregorsomething/compilebaseconnector/blob/master/src/main/java/me/gregorsomething/database/processor/RepositoryProcessor.java): `src/main/java/me/gregorsomething/database/processor/RepositoryProcessor.java`
- [Query processor](https://github.com/gregorsomething/compilebaseconnector/blob/master/src/main/java/me/gregorsomething/database/processor/QuerySubProcessor.java): `src/main/java/me/gregorsomething/database/processor/QuerySubProcessor.java`
- [Statement processor](https://github.com/gregorsomething/compilebaseconnector/blob/master/src/main/java/me/gregorsomething/database/processor/StatementSubProcessor.java): `src/main/java/me/gregorsomething/database/processor/StatementSubProcessor.java`
- [SQL parameters](https://github.com/gregorsomething/compilebaseconnector/blob/master/src/main/java/me/gregorsomething/database/processor/paramater/ParameterProcessor.java): `src/main/java/me/gregorsomething/database/processor/paramater/ParameterProcessor.java`
- [Result mapping generator](https://github.com/gregorsomething/compilebaseconnector/blob/master/src/main/java/me/gregorsomething/database/processor/types/TypeMapperCodeGenerator.java): `src/main/java/me/gregorsomething/database/processor/types/TypeMapperCodeGenerator.java`
- [Type mapper resolver](https://github.com/gregorsomething/compilebaseconnector/blob/master/src/main/java/me/gregorsomething/database/processor/types/TypeMapperResolver.java): `src/main/java/me/gregorsomething/database/processor/types/TypeMapperResolver.java`
- [Complex type resolver](https://github.com/gregorsomething/compilebaseconnector/blob/master/src/main/java/me/gregorsomething/database/processor/types/ComplexTypeResolver.java): `src/main/java/me/gregorsomething/database/processor/types/ComplexTypeResolver.java`

### Runtime repositories

- [Generated implementation](https://github.com/gregorsomething/compilebaseconnector/blob/master/src/main/java/me/gregorsomething/database/processor/RepositoryProcessor.java): `src/main/java/me/gregorsomething/database/processor/RepositoryProcessor.java`
- [Repository provider](https://github.com/gregorsomething/compilebaseconnector/blob/master/src/main/java/me/gregorsomething/database/RepositoryProvider.java): `src/main/java/me/gregorsomething/database/RepositoryProvider.java`
- [Transaction contracts](https://github.com/gregorsomething/compilebaseconnector/blob/master/src/main/java/me/gregorsomething/database/Transactional.java): `src/main/java/me/gregorsomething/database/Transactional.java`
- [Transaction](https://github.com/gregorsomething/compilebaseconnector/blob/master/src/main/java/me/gregorsomething/database/Transaction.java): `src/main/java/me/gregorsomething/database/Transaction.java`

### Database connectivity

- [Database API](https://github.com/gregorsomething/compilebaseconnector/blob/master/src/main/java/me/gregorsomething/database/Database.java): `src/main/java/me/gregorsomething/database/Database.java`
- [DataSource database](https://github.com/gregorsomething/compilebaseconnector/blob/master/src/main/java/me/gregorsomething/database/DataSourceDatabase.java): `src/main/java/me/gregorsomething/database/DataSourceDatabase.java`
- [MariaDB provider](https://github.com/gregorsomething/compilebaseconnector/blob/master/src/main/java/me/gregorsomething/database/MariaDBDatabaseProvider.java): `src/main/java/me/gregorsomething/database/MariaDBDatabaseProvider.java`
- [Postgres provider](https://github.com/gregorsomething/compilebaseconnector/blob/master/src/main/java/me/gregorsomething/database/PostgresDatabaseProvider.java): `src/main/java/me/gregorsomething/database/PostgresDatabaseProvider.java`
- [Transactional database](https://github.com/gregorsomething/compilebaseconnector/blob/master/src/main/java/me/gregorsomething/database/TransactionalDatabase.java): `src/main/java/me/gregorsomething/database/TransactionalDatabase.java`
- **JDBC database**

### Other components

- **Repository developer**

## Connections

- Repository developer → Repository interface: defines
- Repository developer → Query annotation: declares queries
- Repository developer → Statement annotation: declares statements
- Repository interface → Repository processor: processed by
- Query annotation → Repository processor: annotates methods
- Statement annotation → Repository processor: annotates methods
- Repository processor → Query processor: dispatches queries
- Repository processor → Statement processor: dispatches statements
- Query processor → SQL parameters: resolves placeholders
- Statement processor → SQL parameters: resolves placeholders
- Query processor → Result mapping generator: generates mapping
- Result mapping generator → Type mapper resolver: looks up types
- Result mapping generator → Complex type resolver: resolves complex types
- Repository interface → Custom type readers: configures readers
- Custom type readers → Type mapper resolver: provides mappings
- Repository processor → Generated implementation: writes implementation
- Repository provider → Generated implementation: instantiates
- Repository provider → Database API: supplies database
- Generated implementation → Database API: executes SQL
- Generated implementation → Transaction: creates transactions
- Transaction contracts → Repository processor: enables transaction support
- Transaction → Transactional database: uses connection
- Transactional database → JDBC database: executes SQL
- MariaDB provider → DataSource database: creates
- Postgres provider → DataSource database: creates
- DataSource database → JDBC database: uses JDBC
- Database API → JDBC database: queries and executes
