Why this EJB backlash?
Why is there this EJB backlash now-a-days?
I think that while EJBs have a few problems it is the best thing out there for building scalable enterprise apps.
I've been in a couple of projects where the tech lead has been so "proud" of himself that he got rid of J2EE and EJBs, only to have the project fall into a messy heap of random code, random use of Spring, random JDBC calls here and there, random architecture.... just pure randomness.
I think I'm as frustrated as you about the complete lack of enthusiasm about J2EE. I built a robust, multi-user web application with reporting capabilities by myself in 3 months. I saved myself no end of database debugging since I didn't have to deal with SQL directly, and I didn't have to worry about the multi-user scalability too much since CMP EJBs solved simultaneous database access issues very well.
Admittedly, I didn't use a lot of J2EE features, like explicitly setting transaction boundaries or clustering, but I found that using local interfaces to my Entities allowed for DB access that was as efficient as a DAO implementation without all the debugging work usually involved in writing DAOs. But, I can add these features if I have to: add a remote Entity interface if I need to access the Entities from another app server or otherwise deal with multiple JVMs and figure out where transaction boundaries need to be set.
From a team perspective, there's a good separation of roles. Visual design people don't need to worry about the code that the EJB people write. Coders can write code, and designers can design UIs and the amount of 'glue' required between the two pieces is minimal.
The J2EE 1.4 spec. allows you to specifically map EJB persistent fields to database columns and set the SQL type. This allows a J2EE application to be built around an existing database very easily. IMHO, there's absolutely no advantage to writing all your SQL by hand and writing DAOs as opposed to simply creating a CMP Entity bean with a Local interface. The performance is just as good on the EJB side, and the development effort is substantially reduced.
Brian