Is it just me, or is J2EE just insanely verbose? I mean, I understand we're writing apps that are going to be sitting on a variety of machines and those machines need to talk to each other - and thus need to have a basic vocabularly to do it - but the duplication of metadata is incredible.
I mean, how many times do you have to refer to a field name? First there's the DDL, which is the SQL you need to create the columns in the table. Then there's always some sort of DAO that will manage the contact between the middle layer and the DB. This usually is two more copies - one for the mapping layer, which could be XML or like in TopLink a Description Class, and then the JavaBeans which hold the data. Then you have some sort of middle layer - which depending on the Pattern you use could be one or two layers: Say a Session Bean which gets a request from a client and communicates to some Entity Bean which talks to the DAO. Then maybe some sort of controller servlet which knows about the field in order to make decisions on where to send the client. Then you've got the JSP page which might be using Yet Another Bean to manipulate the data that's being shown to the User.
Probably everyone won't use all those levels (or maybe I'm off base about a couple but I was trying to include all the layers of a "classic" J2EE app in there....) But at the bare minium you have 3 or 4 copies of the field name. A change in the DB means massive changes throughout your app... it's a bit ridiculous.
Or maybe it's all just there to keep us employed. Which is fine by me, but I don't think so. I think it's just over zealous engineers who can't think outside the box. This is why Microsoft is both great and evil at the same time and has all these dedicated developers because they don't think like this. J2EE is classic Unix/Sun engineering. It's robust, etc., but what a PITA.
As I'm delving back into J2EE I'm just constantly thinking, "there has to be an easier way!" All we're doing, at the end, is reading and writing to a database... maybe adding some intelligence in the middle, but that's about it. All this complexity just makes apps more work and less useful... we need to be concetrating on the logic, not the infrastructure.