Об этом проекте

Exposed — это официальный проект JetBrains, предоставляющий легковесную SQL-библиотеку и ORM-фреймворк для языка программирования Kotlin. Построенный на основе драйверов подключения к базам данных, он поддерживает как JDBC, так и R2DBC (начиная с версии 1.0.0) драйверы, предлагая два различных подхода к доступу к базе данных: типобезопасный предметно-ориентированный язык (DSL), оборачивающий SQL, и легковесный API Data Access Object (DAO). Талисманом проекта является каракатица, выбранная за её способность имитировать различные среды — аналогично тому, как Exposed может адаптироваться к различным движкам баз данных, позволяя разработчикам создавать приложения без зависимости от конкретной базы данных и переключаться между ними с минимальными изменениями. Поддерживаемые базы данных включают H2 (2.x), MariaDB, MySQL, Oracle, PostgreSQL (включая pgjdbc-ng), Amazon Redshift (только JDBC), Microsoft SQL Server и SQLite. Фреймворк организован в основные модули: exposed-core предоставляет базовые компоненты и DSL API; exposed-dao (опционально) включает DAO API и совместим только с exposed-jdbc; exposed-jdbc обеспечивает транспортную реализацию JDBC; а exposed-r2dbc обеспечивает поддержку реактивного подключения к реляционным базам данных. Модули расширения охватывают дополнительные функции, включая хранение зашифрованных данных (exposed-crypt), обработку даты и времени через Java 8 Time API, Joda-Time и kotlinx-datetime, типы данных JSON/JSONB (exposed-json), денежные суммы (exposed-money), миграции схемы базы данных (exposed-migration-core, exposed-migration-jdbc, exposed-migration-r2dbc) и стартеры интеграции Spring Boot для Spring Boot 3 и 4, а также менеджеры транзакций Spring Framework. Требования включают Kotlin 2.2+ и JDK 8+ для большинства модулей, при этом JDK 11+ требуется для модулей, связанных с R2DBC, и JDK 17+ для модулей, связанных со Spring, и exposed-crypt. Подход DSL позволяет разработчикам определять таблицы как объекты Kotlin с типизированными столбцами, выполнять операции CRUD, выполнять соединения, использовать SQL-функции и применять предложения group-by — всё это с типобезопасностью на этапе компиляции. Подход DAO предоставляет классы сущностей с объектами-компаньонами для запросов, поддерживая лениво загружаемые отношения и ссылки. Релизы доступны на Maven Central в пространстве имён org.jetbrains.exposed. Проект лицензирован под Apache License 2.0 и приветствует вклад через pull request'ы, связанные с задачами на JetBrains YouTrack.