In today’s article, we will take a look at composite primary key support in two top Java ORMs: jOOQ and Hibernate. We’ll look at a couple examples, learn how column configuration looks in Hibernate, and how support is organized in jOOQ.
I’ve been testing a ton of frameworks lately – good and otherwise. One of them, the Java micro framework Spark, really amazed me with its simplicity and rapid development capabilities. In this article, we’ll examine an example of Spark’s usefulness by creating a REST API. So, without further ado, let’s see how to store, retrieve, update and delete some information in a PostgreSQL database using jOOQ ORM over a RESTful API in a simple To-do app.
The following fallacies are things that I hear all the time: “SQL is legacy. Why can’t we work with more modern tech?”, or “SQL is low level, like assembler. Would you prefer to work with assembler or with Java? Similarly, would you prefer to work with SQL or with Hibernate?” It’s time we move on and realize that with SQL, we can be incredibly productive and write awesome data logic in only a few lines of code.
jOOQ is a Java Object-Relational Mapper that lets you build type safe SQL queries through its fluent API. Using built-in Vertabelo support we can generate sufficient code from the previously designed model. Generated Java classes correspond to database tables, records, etc. This time, we automate this process by using Gradle build system.
jOOQ provides an easy way to automate the process of generating the java classes that represent database tables, records, etc. via the jooq-codegen-maven plugin. This time we let Maven worry about downloading the required JAR files and generating Java code that lets you build typesafe SQL queries through jOOQ’s fluent API.
It often happens that if something is loved, it is also hated with the same power. The idea of object relational mapping fits into this concept perfectly. You will definitely come across many opposite points and fierce discussions as well as unwavering advocates and haters. So if you have ever asked whether to use ORM or not, the answer “it depends” will not be enough.
jOOQ and Vertabelo perfectly complement each other in the application development. With Vertabelo you can easily design a database structure what saves you from writing DDL code manually, while jOOQ handles generation of Java classes corresponding to database tables, and allows to construct SQL queries through its fluent API.
Some time ago I announced that the integration of Vertabelo and jOOQ was coming soon. While we’re waiting for an official (stable) jOOQ release to support this integration, I’d like to present you with some of the details about how to use this new feature.
We’ve got good news for Java developers talking to databases. We’re in the home stretch for delivering built-in support for Vertabelo XML format in jOOQ. And that’s not all. You won't even have to download the XML manually – jOOQ will take care of it for you!
In the Java world, there are many standards. Some of them have grown up from commonly used libraries or frameworks. For example, JPA, which was highly influenced by Hibernate.
Standards are good. They eliminate chaos and bad practices. But standards shouldn’t be a kind of Bible for developers. A set of tools used in the project should be chosen consciously, not blindly “because it’s a standard and others use it.” It’s like in the business market, where a monopoly causes a lot more harm than good.