This website uses cookies for visitor traffic analysis. By using the website, you agree with storing the cookies on your computer.More information

JVx 0.9 design decission

In the last days we talked a lot about JVx's DB independency, because every DB has its own peculiarities.
Specifically the case sensitive is everywhere handled different. An Oracle DB prefers upper case column names, table names, ... A PostgreSql DB prefers lower case. It is possible to use quoting with JVx and everything works fine until you switch your database.

Example

We develop an application with an Oracle DB. We don't use quoting because we know everything is upper case. Our client code contains column acces like that:

rdbData.getRowDefinition().getColumnDefinition("NAME")...

Now we have to switch from Oracle to PostgreSql (company decission). Because PostgreSQL prefers lower case column names, table names - we get a problem with our client because the column access is upper case. We could create our database objects in upper case and enable quoting for our DBAccess but that is all a lot of work and maybe our existing PostgreSql DB has objects which are case sensitive. We won't change our existing database objects!

It is an option that you change your application code when you change your database, but that is not a real solution - isnt it?

Because we think, things sould be easier with JVx, we decided to change the column access. With the final release of JVx 0.9 you have to access all columns with upper case letters. The mapping is handled from JVx. Because of this change, a JVx application (>= 0.9) will be DB independent.

What does this mean for JVx applications (< 0.9) ?

You need to change all column access to upper case letters where the access is not with upper case letters. That means, you need to check your client code and your server-side triggers.

Backwards compatibility?

It is possible to make it backwards compatible but it is very important to keep JVx simple and one of our first decissions was, that we don't put a lot effort into backwards compatibility before JVx 1.0. Things change after JVx 1.0 ;-)