Sobre o projeto

Exposed é um projeto oficial da JetBrains que fornece uma biblioteca SQL leve e um framework ORM para a linguagem de programação Kotlin. Construído sobre drivers de conectividade de banco de dados, ele suporta drivers JDBC e R2DBC (desde a versão 1.0.0), oferecendo duas abordagens distintas para acesso a banco de dados: uma Linguagem de Domínio Específico (DSL) type-safe que encapsula SQL e uma API leve de Objeto de Acesso a Dados (DAO). O mascote do projeto é a sépia, escolhida por sua capacidade de imitar vários ambientes—semelhante a como Exposed pode se adaptar a uma variedade de motores de banco de dados, permitindo que desenvolvedores criem aplicativos sem dependências de qualquer banco específico e mudem entre eles com alterações mínimas. Os bancos de dados suportados incluem H2 (2.x), MariaDB, MySQL, Oracle, PostgreSQL (incluindo pgjdbc-ng), Amazon Redshift (somente JDBC), Microsoft SQL Server e SQLite. O framework é organizado em módulos principais: exposed-core fornece componentes fundamentais e a API DSL; exposed-dao (opcional) habilita a API DAO e é compatível apenas com exposed-jdbc; exposed-jdbc fornece a implementação de transporte JDBC; e exposed-r2dbc fornece suporte a conectividade de banco de dados relacional reativa. Os módulos de extensão cobrem funcionalidades adicionais, incluindo armazenamento de dados criptografados (exposed-crypt), manipulação de data e hora via API Java 8 Time, Joda-Time e kotlinx-datetime, tipos de dados JSON/JSONB (exposed-json), valores monetários (exposed-money), migrações de esquema de banco de dados (exposed-migration-core, exposed-migration-jdbc, exposed-migration-r2dbc) e starters de integração com Spring Boot para Spring Boot 3 e 4, juntamente com gerenciadores de transação do Spring Framework. Os requisitos incluem Kotlin 2.2+ e JDK 8+ para a maioria dos módulos, com JDK 11+ exigido para módulos relacionados a R2DBC e JDK 17+ para módulos relacionados a Spring e exposed-crypt. A abordagem DSL permite que desenvolvedores definam tabelas como objetos Kotlin com colunas tipadas, executem operações CRUD, realizem junções, usem funções SQL e apliquem cláusulas group-by—tudo com segurança de tipos em tempo de compilação. A abordagem DAO fornece classes de entidade com objetos complementares para consultas, suportando relacionamentos carregados lentamente e referenciadores. As versões estão disponíveis no Maven Central sob o namespace org.jetbrains.exposed. O projeto é licenciado sob Apache License 2.0 e aceita contribuições via pull requests vinculados a issues no JetBrains YouTrack.