Michael,
(IMHO) Your anecdote reveals a not-unfamiliar trend. (And with no ill-will towards Hibernate) ... it seems that Hibernate was embraced by project managers because they saw a lot of resumes with Hibernate, and programmers learned Hibernate because a lot of Project Managers asked for Hibernate.
When I ask the explicit question "why", the answer seems to reduce *very* quickly to "because everyone else is using it". (Which sounded to me to be the same complexity of thought behind going with "Microsoft Windows" and "VHS", and I think to some degree "McDonnald's Hamburgers"). So it was not sufficiently convincing.
I started out with Objective-C, Webobjects, and EOF in 1999, and at the time they were some of the most advanced software technologies available. The design patterns were mature and stable, and therefore (IMO again) an excellent place to start for Cayenne.
BTW, the last official report I heard from Apple is of the major milestone that music purchases via iTunes have surpassed CD sales. This is significant since iTunes is built with Webobjects & EOF. (I would consider a successful multi-billion dollar three-tier enterprise system to be a worthy 'proof of concept', but unfortunately Webobjects is considered to be "dead" in the developer community.)
Thanks for your input, I think the amount of "workarounds" one has to do in a project (as you report with Hibernate relationships) is a significant measure of maturity and/or brittleness.
Joe
On Sep 6, 2010, at 10:21 AM, Michael Gentry wrote:
> Hi Joe,
>
> I don't have a Cayenne vs Hibernate comparison, but I can tell you a
> little about how things have shifted a bit where I work.
>
> Hibernate was the official ORM for non-WebObjects projects, which use
> EOF, of course. (We have a lot of legacy WO projects to maintain.)
> The WO people were much more interested in Cayenne since it mirrored
> EOF quite a bit. The non-WO people were much more interested in
> Hibernate because it was the "hip" ORM. Management chose Hibernate
> because it was the de-facto standard ORM in the Java community
> (everyone was using it) and they based part of that decision on the
> job search issue (who has Hibernate on their resume vs Cayenne).
>
> About 4-5 months ago, though, there was a small revolt by the
> developers, led in large part by the non-WO developers -- that is, the
> ones who wanted to use Hibernate because it was the standard ORM in
> the Java community (and had the buzz/mindshare behind it). Many of
> them were tired with problems they kept encountering with Hibernate
> (especially the lazy initialization exception). After many
> meetings/debates/etc, Cayenne got approved for general use and now
> several projects (including a large one that has a huge
> Hibernate-based backend already) are using Cayenne. The project I'm
> working on now consists of three Tapestry 5-based web applications
> with a common shared Cayenne-based core and that mirrors many of our
> other projects (we tend to separate out admin-restricted interfaces
> from user-exposed interfaces).
>
> From a personal perspective, the previous project I worked on is based
> on Tapestry 5 and Hibernate. (The developers voted at the beginning
> of the project between Hibernate and Cayenne and Cayenne lost by one
> vote.) There were numerous places in the application that we had to
> do things "backwards" due to Hibernate and the lazy initialization
> exception. For example, much of the application follows a
> wizard-based entry system and the user chooses their state on one page
> and then their county on another page. We couldn't call
> state.getCounties() on the county page because the state's Hibernate
> session was closed and would throw an exception. Things like that are
> natural in Cayenne and Just Work. What we had to do was construct a
> new query for the counties based upon the state. I joked around that
> with Hibernate, we might as well not have relationships because we
> don't use them because we can't follow them.
>
> mrg
>
>
> On Sun, Sep 5, 2010 at 2:21 PM, Joe Baldwin <jfbaldwi..arthlink.net> wrote:
>> Hi,
>>
>> I am again responsible for making a cogent Cayenne vs Hibernate Comparison. Before I "reinvent the wheel" so-to speak with a new evaluation, I would like to find out if anyone has done a recent and fair comparison/evaluation (and has published it).
>>
>> When I initially performed my evaluation of the two, it seemed like a very easy decision. While Hibernate had been widely adopted (and was on a number of job listings), it seemed like the core decision was made mostly because "everyone else was using it" (which I thought was a bit thin).
>>
>> I base my decision on the fact that Cayenne (at the time) supported enough of the core ORM features that I needed, in addition to being very similar conceptually to NeXT EOF (which was the first stable Enterprise-ready ORM implementations). Cayenne seems to support a more "agile" development model, while being as (or more) mature than EOF. (In my opinion. :) )
>>
>> It seem like there is an explosion of standards, which appear to be driven by "camps" of opinions on the best practices for accomplishing abstraction of persistence supporting both native apps and highly distributed SOA's.
>>
>> My vote is obviously for Cayenne, but I would definitely like to update my understanding of the comparison.
>>
>> Thanks,
>> Joe
>>
>>
This archive was generated by hypermail 2.0.0 : Mon Sep 06 2010 - 15:12:35 UTC