We are building a greenfield application and are trying to decide whether to use a Spring+Hibernate or an EJB-3 (using CMP) based architecture for our Seam applications. We are looking for the following qualities: ease of development, speed of execution, and automated testability. We have some experience writing Spring beans and Hibernate, no EJB. Our applications will be portlets running on JBoss portal for a corporate intranet, and will have low transactional volume. With these requirements, can anyone explain why we should choose one solution over the other, and/or help us in selecting one? After reviewing the Seam Reference Guide we are left with the impression that the EJB route may be easier with Seam.
We are in almost the same situation: moving some part of functionality from old project to new one.
We have decided using Seam in our new project. We have struts 1(old crap) + spring + hibernate in old project.
But new system will work with many users who are modifying data in real-time. So jboss will be clustered in future.
Is there some gain in performance and clustering when working with EJB3 comparing with Hibernate?
For now I have quickly set up hibernate with seam hibernate session injection (for test).
For a year we have been developing web app with seam with ejb3 and hibernate.
seam is far the best way to communicate your business logic with your ui. like spring uses IOC and directly integrates EJB3 with JSF. Some problems that we always face like internalization, themes, login.. are bundled in seam and you can easily develop the basis of your web app just in a few hours.
i know the word "ejb" leads to many question marks on experienced J EE developers, since ejb was a pain in the ass as the first version. but ejb3 seems real handful and the use of annotations made it even easier.
actually you can use either JPA or hibernate with these choices. but JPA offers the useo f annotations and you don't have to deal with config files. you can even configure jpa implemented by hibernate. if your infrastucture is too comlicated you can also switch to hibernate.