Re: Enterprise using WO
Ashley Aitken <[email protected]>
| Newsgroups | gmane.comp.web.webobjects.general |
|---|---|
| Message-ID | <[email protected]> |
Hi again Alejandro (et al.), Thanks for your informative reply. On 21/05/2005, at 12:14 AM, Alejandro M. Ramallo wrote: >> WO + Hibernate? That's an interesting combination. >> >> Can you please explain why you chose to use Hibernate rather than >> EOF? Is it because Hibernate works with POJOs rather than subclasses >> of EO? > > We are using Hiberate now for several reasons: > 1) Every Java Software Factory I've been in contact with is using it, > and you can get people already using the tool in several domains That's a good point. But then every Java software factory was big on using plain-old JDBC a few years back as well ;-) > 2) The current and future EJB spec is going towards the POJO model > based on Hibernate (at least Gavin King -Hibernate's father- is in the > J2EE JCP). Maybe then I will use EJBs :-) Yes, that's true. Finally, and probably as a result of the threat from .Net, the folks directing J2EE are making some changes. > 3) EOF is great but it has an architectural problem that I guess is > based on the fact the EOF was initially conceived as a desktop 2 tier > client server architecture. In particular I am talking about the way > EOF handles database connections. EOF was not designed to share a pool > of db connections among users. You can actually achieve that by > replicating the EOF stack (one per user , or one shared among some > users) but by doing that you are replicating the EOF cache, nasty. > Once you replicate EOF stacks you break optimistic locking unless you > provide a change notification mechanism among stacks, nasty again. > Same happens when you deploy several instances of the app (you always > do that) Yes, good points again. Although I wonder why (if) you really need per-user database connections. Of course, and as you suggest different instances obviously use different connections. EOF could surely use an integrated change notification system (based on one or the two or three third party solutions). > BTW another option is to use Andrus Adamchik's Cayenne ORM. Yes, I'm not sure but I believe Cayenne may have something "built-in" to assist with change notification across instances (or am I thinking of something else - someone please correct me if I am wrong about this). > (Thanks him again for the amazing WOLips magic!) Yes, three cheers for Andrus (and the WOLips team). > I can get developers with Hibernate knowledge in the market right now. That's true, although I would assume worthy developers would be able to pick up EOF without much trouble (i.e. if they had a good understanding of OO, O/R Mapping, SQL, frameworks, ...). > The fact is that if Apple redesigns EOF architecture I will be > definitively using it again. In fact I am just about to formally > request that to an EOF engineer I've met in the last WWDC. I'd be interested to hear what they say, but I don't suspect a major rewrite of EOF would be on the table at this stage. >> Also, why did you choose a Web interface for a factory automation >> system? I am just curious about your application / domain. >> > > We wanted to be able to access the tool using a web browser from > anywhere. Sure, that makes sense. You seem to have chosen very suitable technologies for your needs. However, the one thing about Hibernate that concerns me when compared with EOF (or Cayenne in the future) is the lack of support for client-side business objects in a thick client. As I said, this is probably not a concern for your application. I think the next step for enterprise applications - when a company's staff get frustrated using the same browser-based interface to their enterprise Web application as their customers do - is the move to a thick client (for the intranet). From my (limited) understanding of Hibernate and other Java persistence technologies, most thick client business processing in a three- (or n-) tier architecture is done by remoting (remote method invocation). There doesn't seem to be anything comparable to EOF's client-side business objects (by way of distributed editing contexts). My concern is that remoting is ok for simple processing of a few objects, but when the interaction becomes more complex it would be come too slow and inappropriate. So in short, when "we" move to thick clients on the Intranet (for our n-tier enterprise Web application), solutions like EOF and Cayenne would be most advantageous. Again, someone please correct me if Hibernate offers a good solution for client-side business object in a thick client (besides a two-tier approach). Or if there are any other technologies / products that enable client-side business objects. Cheers, Ashley. -- Ashley Aitken Perth, Western Australia mrhatken at mac dot com Skype Name: MrHatken (GMT + 8 Hours!)