How to Write a Quick and Dirty Converter in jOOQ

One of jOOQ's most powerful features is the capability of introducing custom data types, pretending the database actually understands them. For instance, when working with SQL TIMESTAMP types, users mostly want to use the new JSR-310 LocalDateTime, rather than the JDBC java.sql.Timestamp type. In jOOQ 3.9+, this is a no brainer, as we've finally introduced … Continue reading How to Write a Quick and Dirty Converter in jOOQ

How to Prevent JDBC Resource Leaks with JDBC and with jOOQ

In a recent consulting gig, I was analysing a client's connection pool issue in a productive system, where during some peak loads, all the Java processes involving database interactions just started queueing up until nothing really worked anymore. No exceptions, though, and when the peak load was gone in the evening, everything returned back to … Continue reading How to Prevent JDBC Resource Leaks with JDBC and with jOOQ

jOOQ Tuesdays: Mario Fusco Talks About Functional and Declarative Programming

Welcome to the jOOQ Tuesdays series. In this series, we’ll publish an article on the third Tuesday every other month where we interview someone we find exciting in our industry from a jOOQ perspective. This includes people who work with SQL, Java, Open Source, and a variety of other related topics. I'm very excited to … Continue reading jOOQ Tuesdays: Mario Fusco Talks About Functional and Declarative Programming

What we Need is Standardised Non-OSS Licenses

If you've followed the recent (fake) news, you've probably already heard it. Oracle is "massively ramping up audits of Java customers it claims are in breach of its licences" After a quick check on the source (The Register), here's a more realistic, probably more accurate version of that headline: Oracle is thinking about auditing 1-2 … Continue reading What we Need is Standardised Non-OSS Licenses

Do You Really Have to Name Everything in Software?

This is one of software engineering's oldest battles. No, I'm not talking about where to put curly braces, or whether to use tabs or spaces. I mean the eternal battle between nominal typing and structural typing. This article is inspired by a very vocal blogger who eloquently reminds us to ... [...] Please Avoid Functional … Continue reading Do You Really Have to Name Everything in Software?

SQL, Streams, For Comprehension… It’s All the Same

Recently, at Devoxx, I've seen this beautiful slide in a talk by Kevlin Henney https://twitter.com/lukaseder/status/796704785936293888 In his talk, he was displaying a variety of approaches to solve the FizzBuzz "problem", including a couple of very elegant solutions in completely declarative approaches and languages. In this particular slide, Kevlin used a notation that is derived from … Continue reading SQL, Streams, For Comprehension… It’s All the Same

A Beginner’s Guide to the True Order of SQL Operations

The SQL language is very intuitive. Until it isn't. Over the years, a lot of people have criticised the SQL language for a variety of reasons. For instance: IDEs cannot easily guess what auto completion options to offer, because as long as you don't specify the FROM clause, there are no tables in scope (yet): … Continue reading A Beginner’s Guide to the True Order of SQL Operations

Prevent SQL Injection with SQL Builders Like jOOQ

As long as we allow ourselves to write string-based dynamic SQL embedded in other programming languages like Java, we will have a certain risk of being vulnerable to SQL injection. That's a fact. Don't believe it? Check out this website exposing all vulnerabilities on Stack Overflow for PHP questions: https://laurent22.github.io/so-injections In a previous blog post, … Continue reading Prevent SQL Injection with SQL Builders Like jOOQ

Use jOOQ to Read / Write Oracle PL/SQL RECORD Types

Some of the biggest limitations when working with Oracle PL/SQL from Java is the lack of support for a variety of PL/SQL features through the JDBC interface. This lack of support is actually not limited to JDBC, but also extends to Oracle SQL. For instance, if you're using the useful PL/SQL BOOLEAN type as such: … Continue reading Use jOOQ to Read / Write Oracle PL/SQL RECORD Types

Applying Queueing Theory to Dynamic Connection Pool Sizing with FlexyPool

I'm very happy to have another interesting blog post by Vlad Mihalcea on the jOOQ blog, this time about his Open Source library flexypool. Read his previous jOOQ Tuesdays post on Hibernate here. Vlad is a Hibernate developer advocate and he's the author of the popular book High Performance Java Persistence, and he knows 1-2 … Continue reading Applying Queueing Theory to Dynamic Connection Pool Sizing with FlexyPool