프로젝트 소개

Exposed는 Kotlin 프로그래밍 언어를 위한 경량 SQL 라이브러리이자 ORM 프레임워크로, JetBrains의 공식 프로젝트입니다. 데이터베이스 연결 드라이버 위에 구축되어 JDBC와 R2DBC(버전 1.0.0부터) 드라이버를 모두 지원하며, 데이터베이스 접근을 위한 두 가지 접근 방식을 제공합니다: 타입 안전 SQL 래핑 도메인 특화 언어(DSL)와 경량 데이터 접근 객체(DAO) API입니다. 프로젝트의 마스코트는 오징어로, 다양한 환경을 모방하는 능력에서 착안했습니다. 이는 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 3 및 4용 통합 스타터와 Spring Framework 트랜잭션 관리자도 포함됩니다. 요구 사항은 대부분의 모듈에 Kotlin 2.2+ 및 JDK 8+이며, R2DBC 관련 모듈은 JDK 11+, Spring 관련 모듈과 exposed-crypt는 JDK 17+가 필요합니다. DSL 접근 방식은 개발자가 타입이 지정된 열을 가진 Kotlin 객체로 테이블을 정의하고, CRUD 작업, 조인, SQL 함수, group-by 절을 컴파일 타임 타입 안전성으로 수행할 수 있게 합니다. DAO 접근 방식은 지연 로딩 관계와 참조자를 지원하는 쿼리용 컴패니언 객체를 가진 엔티티 클래스를 제공합니다. 릴리스는 Maven Central의 org.jetbrains.exposed 네임스페이스에서 제공됩니다. 이 프로젝트는 Apache License 2.0으로 라이선스되며, JetBrains YouTrack의 이슈에 연결된 풀 리퀘스트를 통한 기여를 환영합니다.