A modern, low-level Clojure wrapper for JDBC-based database access, designed for performance and simplicity.
next.jdbc is a low-level Clojure library that provides a modern, performant wrapper around Java's JDBC API for database access. It solves the performance and API complexity issues of its predecessor, clojure.java.jdbc, by offering a streamlined, protocol-based design with built-in support for reducible queries and datafy/nav integration.
Clojure developers building applications that require efficient, low-level database access via JDBC, particularly those dealing with large result sets or seeking to optimize connection management.
Developers choose next.jdbc for its significant performance improvements, cleaner and more consistent API, and modern Clojure features like transducer support and datafy integration, making it a natural upgrade from clojure.java.jdbc.
A modern low-level Clojure wrapper for JDBC-based access to databases.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Reduces overhead in ResultSet conversion and connection handling, leading to faster processing of large datasets, as emphasized in the motivation section for performance improvements.
Uses qualified keywords, transducers, and reducible queries to encourage efficient data processing patterns from the start, aligning with modern Clojure idioms.
Easier mixing with direct Java JDBC code and a clearer path from db-spec to DataSource to Connection, simplifying interoperability and connection reuse.
Integrates with Clojure's datafy and nav for enhanced tooling, allowing result sets to be explorable in tools like Portal or Reveal without extra setup.
As a clean break from clojure.java.jdbc, migrating existing code requires significant refactoring and adaptation to the new API, which the README acknowledges in its migration guide.
Does not include built-in connection pooling, forcing developers to rely on external libraries like HikariCP or c3p0 for production-grade performance, adding complexity to setup.
The protocol-based design, while powerful, may be more complex for developers unfamiliar with Clojure protocols, potentially increasing the initial learning effort compared to simpler wrappers.