Skip to content
forked from jdbi/jdbi

jdbi is designed to provide convenient tabular data access in Java; including templated SQL, parameterized and strongly typed queries, and Streams integration

License

Notifications You must be signed in to change notification settings

lwach-allegro/jdbi

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Jdbi Logo

CD from master pushes | CI Build with tests | Reliability Rating | Maintainability Rating | Security Rating

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.9 or later is required.

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 MAVEN_CONFIG variable:

% MAVEN_CONFIG="-B -fae" make install

Note: The JDBI_MAVEN_OPTS variable is still supported, but deprecated. Please use MAVEN_CONFIG directly.

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 a full release build, docker or a docker compatible environment must be available. A small number of tests 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 and MacOS

For podman on Linux, 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.

For podman on MacOS, it is necessary to set the DOCKER_HOST environment variable correctly.

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.

About

jdbi is designed to provide convenient tabular data access in Java; including templated SQL, parameterized and strongly typed queries, and Streams integration

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 95.7%
  • Kotlin 3.1%
  • HTML 0.9%
  • FreeMarker 0.1%
  • ANTLR 0.1%
  • Makefile 0.1%