Description
jDBI provides a convenience interface for SQL operations in Java. It is not
intended as an abstraction layer, but rather a library which makes the common
things easy and the hard things possible, to paraphrase Larry Wall.
Documentation is at http://jdbi.org/
There is a mailing list at http://groups.google.com/group/jdbi
JDBI alternatives and similar libraries
Based on the "Database" category.
Alternatively, view JDBI alternatives based on common mentions on social networks and blogs.
-
orientdb
OrientDB is the most versatile DBMS supporting Graph, Document, Reactive, Full-Text and Geospatial models in one Multi-Model product. OrientDB can run distributed (Multi-Master), supports SQL, ACID Transactions, Full-Text indexing and Reactive Queries. -
MapDB
MapDB provides concurrent Maps, Sets and Queues backed by disk storage or off-heap-memory. It is a fast and easy to use embedded Java database engine. -
Crate
CrateDB is a distributed and scalable SQL database for storing and analyzing massive amounts of data in near real-time, even with complex queries. It is PostgreSQL-compatible, and based on Lucene. -
ObjectBox embedded database
Android Database - first and fast, lightweight on-device vector database -
Chronicle Map
Replicate your Key Value Store across your network, with consistency, persistance and performance. -
sql2o
sql2o is a small library, which makes it easy to convert the result of your sql-statements into objects. No resultset hacking required. Kind of like an orm, but without the sql-generation capabilities. Supports named parameters. -
JetBrains Xodus
Transactional schema-less embedded database used by JetBrains YouTrack and JetBrains Hub. -
FlexyPool
FlexyPool adds metrics and failover strategies to a given Connection Pool, allowing it to resize on demand.
InfluxDB - Purpose built for real-time analytics at any scale.
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of JDBI or a related project?
Popular Comparisons
README
[Jdbi Logo](docs/src/adoc/images/logo.svg)
The Jdbi library provides convenient, idiomatic access to relational databases in Java.
Jdbi is built on top of JDBC. If your database has a JDBC driver, you can use Jdbi with it.
Also check out the code examples in the Examples module.
Prerequisites
Jdbi 3 requires Java 8 or better to run. Jdbi 3 requires Java 11 or better to compile.
We run CI tests against Java 11 and 17 and still support Java 8 for testing on a best-effort basis.
Java 8 compatibility
Java 8 is considered deprecated. While Jdbi does not (yet) have a specific date to drop support, please chart your path forward to a supported JDK! We recommend running the latest LTS JDK.
Jdbi 3 is compiled to Java 8 byte code and is considered stable on Java 8.
However, we now require Java 11 or better to compile as the tool chain no longer runs on Java 8.
We run CI tests on Java 8 on a best effort basis as some of the tests require Java 11+ only dependencies.
NOTE: to run on Java 8, you may need to manage the caffeine
dependency back to the
latest 2.x release. 3.x is necessary for newer JDKs but does not run on 8.
Building
Jdbi is "batteries included" and uses the Apache Maven Wrapper. If an external Maven installation is used, Apache Maven 3.8.6 or later is recommended.
Jdbi requires a modern JDK (11+) to build and enforces JDK 17+ for releases.
All build tasks are organized as make
targets. The Makefile in the root directory shows which commands are run.
Build the code an install it into the local repository:
$ make install
Running make
or make help
displays all available build targets with a short explanation. Some of the goals will require project membership privileges.
To add command line parameters to the maven executions from the Makefile, set the JDBI_MAVEN_OPTS
variable:
% JDBI_MAVEN_OPTS="-B -fae" make install
Testing
Running make tests
runs all unit and integration tests.
Some tests use Postgres and H2 databases (the tests will spin up temporary database servers as needed). Most modern OS (Windows, MacOS, Linux) and host architecture (x86_64, aarch64) should work.
Docker requirements for tests
For a full release build, docker or a docker compatible environment must be available. A small number of tests (those supporting the OTJ postgres plugin) use testcontainers which in turn requires docker.
make install-nodocker
skips the tests when building and installing Jdbi locally. make tests-nodocker
skips the tests when only running tests.
Supported configurations are
- Docker Desktop on MacOS
- docker-ce on Linux
- podman 3 or better on Linux.
For podman, the podman socket must be activated (see https://stackoverflow.com/questions/71549856/testcontainers-with-podman-in-java-tests) for details. SELinux sometimes interferes with testcontainers if SELinux is active; make sure that there is an exception configured.
Contributing
Please read CONTRIBUTING.md for instructions to set up your development environment to build Jdbi.
Versioning
Jdbi uses SemVer to version its public API.
License
This project is licensed under the Apache 2.0 license.
Project Members
- Brian McCallister (@brianm) - Project Founder
- Steven Schlansker (@stevenschlansker)
- Henning Schmiedehausen (@hgschmie)
- Matthew Hall (@qualidafial)
- Artem Prigoda (@arteam)
- Marnick L'Eau (@TheRealMarnes)
Special Thanks
- Alex Harin (@aharin) - Kotlin plugins.
- Ali Shakiba (@shakiba) - JPA plugin
- @alwins0n - Vavr plugin.
- Fred Deschenes (@FredDeschenes) -
Kotlin unchecked extensions for
Jdbi
functions.@BindFields
,@BindMethods
annotations.
*Note that all licence references and agreements mentioned in the JDBI README section above
are relevant to that project's source code only.