DEV Community

Anatoly
Anatoly

Posted on • Edited on

1

JDBC and Streams have never been simpler

Just updated a library which makes life much easier when speaking about databases...

When streams were introduced in java I got myself thinking of how I can leverage it with databases. It is "pretty common" task to write SQL queries and process the results within Java. And the more I was ought to deal with prepared statements, result sets, all those SQLExceptions etc., the more I was disappointed. Searching the WEB for solutions where I wanted to find two worlds collided conveniently - I found no suitable one! Of course there are many libraries that afford some, but neither of them suited me. I wanted something else. Therefore I decided to write one myself for myself.

My goals...

...were based on my background experience:

  1. No prepared boilerplate and SQLExceptions
  2. Executing arbitrary scripts
  3. Minimal configuration
  4. "Real" streams (lazily data fetching)
  5. Raw SQL
  6. Database is just a method invocation

and some others - don't remember them all :)

So after some time I ended up with this:

A brief

1 - Get:

<dependency>
  <groupId>com.github.buckelieg</groupId>
  <artifactId>jdbc-fn</artifactId>
  <version>1.0</version>
</dependency>
Enter fullscreen mode Exit fullscreen mode

2 - Setup:

DB db = DB.builder()
        .withMaxConnections(10)
        .build(() -> DriverManager.getConnection("vendor-specific-string"));
Enter fullscreen mode Exit fullscreen mode

3 - Use:

Collection<String> names = db.select("SELECT name FROM users WHERE ID IN (?, ?)", 1, 2).execute(rs -> rs.getString("name")).collect(Collectors.toList());
Enter fullscreen mode Exit fullscreen mode

Happy to share: jdbc-fn project.

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more