Should I use Session EJBs to hide Hibernate, or have Hibernate code in each rich client, some how (assuming it's possible) using JBoss Cache to help the clients with performance?
We've got a project that requires several different rich, job specific GUI's (read: Swing or SWT) to be created. Some of these UI's are very data-intensive (e.g. a real-time dispatcher's screen). Would it be possible/wise to use Hibernate code at each client and have Hibernate utilize JBoss Cache? Or would it be better to leave the Hibernate code on the server behind Session EJBs and pass pure POJO's across the network?
In this project, data will change quite often and several people will need to see it updated on the fly, for others data will change at a slower pace (e.g. Quoting/Pricing)
Bonus Question: Would a combination of the two approaches work? Could I have the data-intensive, real-time, GUI's use Hibernate on the client and plug into the JBoss Cache being used by my Session EJBs?
I think the alternative with using Hibernate code in each rich client is better than extra using EJBs to hide Hibernate.
For the using of JBoss Cache you do not need an application server like JBoss AS. You can use it outside a AS.