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!)
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.