Re: ORM Comparison

From: Joe Baldwin (jfbaldwi..arthlink.net)
Date: Thu Aug 09 2007 - 17:16:31 EDT

  • Next message: Joe Baldwin: "Re: ORM Comparison"

    Robert,

    These are the *kind* of comments I am looking for; thanks for the
    details, I have a few followup questions.

    I also found that Cayenne is a cogent framework that results in
    higher productivity because not only is it feature rich, but the work-
    flow aspect is considered essential to the design (and not just an
    afterthought). BTW, I also experienced the "quick-start" phenomenon
    with Cayenne; it was a welcome surprise.

    So after re-reading your comments, I suspect one of the more
    important aspects is work-flow. In your experience, is it possible
    to configure a number of 3rd party software to create the Cayenne-
    like work-flow that is facilitated by CayenneModeler?

    So unless one is a cowboy-programmer (ref Agile-insult :) ), then
    evolving a database in a methodical manner would seem to be better
    managed via the CayenneModeler and the Cayenne way of "groking"?

    Joe

    On Aug 9, 2007, at 4:28 PM, Robert Zeigler wrote:

    > In terms of raw mapping capabilities ("what can be mapped, and
    > how"), hibernate basically has cayenne beat at this point.
    > For example, hibernate supports things lie mapping to-many
    > relationships as lists, arrays, or maps ( cayenne currently only
    > supports mapping them as lists).
    > Cayenne may have some mapping facilities not in hibernate, but none
    > that I'm aware of offhand (maybe the extended types facility? Not
    > sure if hibernate has an equivalent to that,
    > but they probably do; oh, when I first starting using cayenne,
    > cayenne supported "lazy" relationship fetching and hibernate did
    > not, but hibernate now supports it).
    >
    > As you mentioned, cayenne has the modeler, whereas hibernate does
    > not offer any such support (except through 3rd parties). ANd that,
    > in my mind, is the biggest difference. Not the modeler,
    > but the mindset. Hibernate is about "let's make an ORM with lots
    > of features". Cayenne is about "let's make a tool and library that
    > makes developers productive".
    >
    > When I first delved into the world of ORM, I spent three days
    > trying to grok hibernate. Finally, recalling that some other users
    > of tapestry were using cayenne, I tried it.
    > Two hours later, my objects were mapped and created, my schema was
    > created, and I was writing my objects. I've never looked back. I
    > wish I could say that dichotomy has lessened;
    > that the hibernate people had realized "hey, people might actually
    > want to /use/ our project, instead of admire our technical genius
    > from a distance", but it doesn't appear that that's the case.
    > On their website, they have a "roadmap to getting started quickly
    > with hibernate". Here's their roadmap:
    >
    > "Day 1: Work with the tutorials
    >
    > * Download Hibernate 3.2 and extract the archive.
    >
    > * Reference documentation: Read the tutorial, work with the
    > source code in the /doc/tutorial/ directory of the Hibernate
    > package. This tutorial covers a simple Hibernate standalone and web
    > application.
    >
    > * Java Persistence with Hibernate: Read the tutorial in the
    > free sample chapter 2 of the book, download the Hello World code.
    > This tutorial is a complete introduction to Hibernate, Java
    > Persistence, and EJB 3.0.
    >
    > Day 2: Read the Documentation
    >
    > * Read the rest of the reference documentation.
    >
    > * Consider reading the rest of the book Java Persistence with
    > Hibernate.
    >
    > * Read the FAQ.
    >
    > Day 3: Start Coding!
    >
    > * Many examples you find on the Net are still Hibernate 1.x or
    > 2.x - read the migration guide for a list of differences to
    > Hibernate3.
    >
    > * Many good patterns can be found on the Wiki Community Area,
    > such as Sessions and transactions, Open Session in View, Generic
    > Data Access Objects, ...
    >
    > * Once you are familiar with basic Hibernate, download the
    > CaveatEmptor example application."
    > (from: http://www.hibernate.org/152.html)
    >
    > That's their "getting started quickly"... any questions? ;)
    > (I could also point out things like: why is the web page named
    > 152.html? Is that: 152 hours of frustration before starting
    > hibernate? Is that 152 days of reading before you start? 152 things
    > you have to do before you understand hibernate? Granted, the name
    > of a web page has nothing to do with the technical quality of the
    > hibernate code. The technical quality of the hibernate code is,
    > I'm sure, very good. But it harks back to my original point of the
    > paradigm of the two projects. 152.html is not a name that you could
    > guess as a user. Similarly, the hibernate "way" is nothing
    > something you can guess your way through and be pleasantly rewarded
    > when something that you tried thinking "I wonder if this will work"
    > actually does.
    > Now compare that to cayenne's quick start for cayenne version 2.0.
    > http://cayenne.apache.org/doc20/quick-start.html
    > Hey, look, I know what that url is telling me... and I generally
    > know what the cayenne API is telling me and asking me, even before
    > reading the javadocs...
    > without reading other tutorials...
    >
    > For me, that's one of the key differences, and one of the main
    > things that keeps in using cayenne. Keep in mind, this is all user
    > perspective. I'm sure there are people out there who find hibernate
    > easy to use... erm, maybe?
    >
    > Robert
    >
    > PS: cayenne also has ROP, which hibernate doesn't, so if you
    > interested in writing swing front ends (truly "rich" client apps,
    > instead of lame webapps... oops, did I say that? ;), cayenne is a
    > no-brainer...
    >
    > PPS:
    >
    > On Aug 9, 2007, at 8/91:23 PM , Joe Baldwin wrote:
    >
    >> This is a general question I would guess at the "use case" level.
    >>
    >> I was recently in a conversation in which I was challenged about
    >> the selection of Cayenne over Hibernate. I have only researched
    >> Hibernate & run some elementary demo tests. My conclusion was
    >> that Hibernate allows you to create a mapping via an XML metadata
    >> file but that some of the mapping responsibilities (currently
    >> found in Cayenne) are left to the programmer to resolve and
    >> maintain. I specifically pointed to Cayenne Modeler as an example
    >> of an essential tool supporting the 'change it in one place'
    >> philosophy that impacts maintenance time budgeting.
    >>
    >> It was asserted that Hibernate could do anything that Cayenne
    >> could do. In addition, the CayenneModeler advantage was dismissed
    >> with a comment concerning an Eclipse plugin that is supposed to
    >> support the same features.
    >>
    >> Things change very quickly in the OpenSource world so perhaps I
    >> could have made a mistake, however, I don't think that I am that
    >> far off the mark. Is there a white paper that might discuss the
    >> differences (couldn't find one at the Hibernate site)? Does
    >> anyone have an opinion?
    >>
    >



    This archive was generated by hypermail 2.0.0 : Thu Aug 09 2007 - 17:17:09 EDT