Apache Derby About to Adopt the Awesome SQL:2003 MERGE Statement
Apache Derby is one out of three popular Java embeddable databases (apart from H2 and HSQLDB). It is very SQL and JDBC standards-compliant, but maybe a bit behind on developments of more advanced SQL...
View ArticlejOOQ compared to iBatis
Nice feedback from a jOOQ user comparing it with iBATIS: jOOQ rocks! We implemented a large scale ETL service with it, and couldn’t be happier. I’ve used iBATIS, and jOOQ gives all the same advantages...
View ArticleAdvanced SQL: Relational division in jOOQ
Relational algebra has its treats. One of the most academic features is the relational division. It is hardly ever used, but comes in handy every now and then. And when you need it, you’ll probably...
View ArticleCROSS JOIN, a nice example for a rarely used operation
In 95% of the cases, cartesian products originate from accidental cross join operations and cause unnecessary high load on a database. Maybe the results aren’t even wrong, as someone may have applied a...
View ArticleWhich database are you using jOOQ with?
I’d like to “feel” the needs of my users. That’s why it’s interesting to know for which databases I should add features next. Which database are you using jOOQ with? Take Our Poll Filed under:...
View ArticleSQL tooling, the ranking
When you need to get up and running quickly with your database, the tooling becomes very important. When developing jOOQ and adding integrations for new databases, I really love those ones that provide...
View ArticlejDBI: A simple convenience layer on top of JDBC
I’m always looking out for similar tools like jOOQ, or at least tools that work in the same domain – the domain of database access abstraction. jDBI looks lovely. It provides simple solutions for what...
View ArticleORM vs. SQL, compared to C vs. ASM
History is repeating itself. This is nothing new, but it takes wisdom (and Elephant memory) to remember when and how things had already happened in a similar way. When you feel that the whole SQL...
View ArticleHow to simulate MySQL’s INSERT statement extensions
I have previously posted about the SQL MERGE statement, and how powerful it is here: http://blog.jooq.org/2011/11/29/arcane-magic-with-the-sql2003-merge-statement/ Unfortunately, not all databases...
View ArticleMartin Fowler on “The Vietnam of Computer Science”
It couldn’t be a better match by a more suited person for jOOQ. Martin Fowler expresses his feelings about SQL, NoSQL, Object-relational mapping on his blog post, which is copied on DZone:...
View ArticleSimulation of TRUNC() in Derby
Derby is missing out a lot of functions from the set of functions that other databases usually provide. One example is the TRUNC(value, decimals) function. According to the Wikipedia, truncation can be...
View ArticleFOR UPDATE simulation in SQL Server and CUBRID
Pessimistic locking is useful every now and then when you explicitly want to lock a given set of rows for a subsequent UPDATE, or for database-based inter-process synchronisation and locking. Normally,...
View ArticleMyBatis’ Wicked Statement Builders
Now here’s one of the most wicked API’s I’ve seen in a while! MyBatis is well-known as a database abstraction framework on top of JDBC, allowing for externalising SQL into files, loading them at...
View ArticleArray, list, set, map, tuple, record literals in Java
Occasionally, when I’m thrilled by the power and expressiveness of JavaScript, I find myself missing one or two features in the Java world. Apart from lambda expressions / closures or whatever you want...
View ArticleFunky String Function Simulation in SQLite
SQLite is so light, it doesn’t have any useful string functions. It doesn’t have ASCII(), LPAD(), RPAD(), REPEAT(), POSITION(), you name it. It does, however, have a wonderful RANDOMBLOB() function. So...
View Article“NoSQL” should be called “SQL with alternative storage models”
Time and again, you’ll find blog posts like this one here telling you the same “truths” about SQL vs. NoSQL: http://onewebsql.com/blog/no-sql-do-i-really-need-it (OneWebSQL being a competitor of jOOQ,...
View ArticleNOT IN vs. NOT EXISTS vs. LEFT JOIN / IS NULL: MySQL
When you’re spoiled with Oracle’s fabulous query transformation capabilities and its really well-done cost-based optimiser, then you might forget how difficult SQL query tuning used to be in the “old...
View ArticleDatabase Abstraction and SQL Injection
I have subscribed to various user groups of jOOQ’s competing database abstraction tools. One of which is ActiveJDBC, a Java implementation of Active Record design pattern. Its maintainer Igor Polevoy...
View ArticleHilarious Rant about SQL Injection
My recent article about SQL injection has stirred some serious emotions on JCG. I don’t want to keep it from you! An extract: [...] The idea that if I use an ORM, my SQL injection woes will magically...
View ArticleMySQL Bad Idea #384
MySQL is a database of compromise. Compromise between running a production-ready relational database and being popular with all sorts of hackers – mostly the ones that don’t really like SQL. And...
View Article