Re: JPA crossroads

From: Robert Zeigler (robert.zeigle..mail.com)
Date: Wed Apr 08 2009 - 17:26:15 EDT

  • Next message: Aristedes Maniatis: "Re: JPA crossroads"

    Good thoughts.

    My $0.02:

    I've always considered specs like JPA to be, well, a bit of a pipe
    dream. Once upon a time, I thought I cared about the ability to
    switch between persistence providers. But then I realized that, no,
    actually, I really don't. Persistence is an area where you choose a
    provider based on differences from rather than similarities to other
    providers. Even having an opportunity last year to do a significant
    amount of work with a (largely) JPA shop didn't really change my
    perspective; they still found areas where the spec wasn't enough,
    where they had to lean on hibernate-specific features. At that point,
    the "happy promise" of "switch providers anytime" is broken. So, I'm
    with Andrus: let's not be afraid to adopt /good/ ideas in other
    frameworks, but also forge ahead where we're strong.

    Robert

    On Apr 8, 2009, at 4/83:56 PM , Andrus Adamchik wrote:

    > I'll try to reply to the specific non-JPA items in this email in a
    > separate thread. I should just say that *now* I share Michael's
    > viewpoint. Below is a long version of the initial email that started
    > this thread.
    >
    > A couple of years ago when I started on the JPA effort the dynamics
    > was different. JPA was the first persistence standard by the Java
    > Community Process that made any kind of sense, with the possibility
    > to differentiate the providers behind the standard API facade (kind
    > of like Tomcat and Jetty are very different beasts, even though both
    > are standard-compliant servlet containers). My plan was to provide
    > Java developers with a standard API built on the stable and tested
    > Cayenne core, convincing enough of the hardcode J2EE crowd to switch
    > to Cayenne (the audience that has been traditionally in the
    > Hibernate camp).
    >
    > So I still think the plan was good, but a little too ambitious.
    > First I was encouraged by a number of the new "volunteers" who
    > emailed me privately offering help. And I do not mean people on this
    > list who were happily using Cayenne for years and had no incentive
    > to switch to JPA - that I can understand. Those were people totally
    > new to the project, seemingly excited about the opportunity to work
    > on a new framework, and at the end not a single person showed up. So
    > there was a failure in building a developer community. Also I
    > overestimated my own availability to do coding, which has shrunk
    > significantly in the last two years. Racing against teams of full-
    > time paid employees of big companies writing their own JPA providers
    > ended up being a losing proposition (not complaining, just
    > reflecting on the fact that I picked the wrong fight).
    >
    > So now we've gone a full circle back to "Cayenne the way it is
    > supposed to be" :-). As mentioned elsewhere the time wasn't wasted.
    > It was spent to compare head to head Cayenne and "mainstream" Java
    > persistence models (conclusion: Cayenne model still gives the users
    > the smoothest ride, but we shouldn't be ashamed to borrow the best
    > ideas from others, and we need to evolve), sync up in a few areas
    > (EJBQL, etc..), and keep improving our strong sides (ROP, Modeler,
    > etc.)
    >
    > There's lots of things to look forward to in and after 3.0. So I
    > wanted to turn this page and move ahead.
    >
    > Andrus
    >
    >
    >
    > On Apr 6, 2009, at 7:10 PM, Michael Gentry wrote:
    >
    >> On Mon, Apr 6, 2009 at 3:55 AM, Andrus Adamchik <andru..bjectstyle.org
    >> > wrote:
    >>> Comments?
    >>
    >> I fear this will be a bit long-winded, but I hope it will be
    >> coherent.
    >>
    >> Having JPA in Cayenne has never been a selling point for me
    >> personally. Chasing the JPA specification feels like a distraction
    >> and almost like an admission that Cayenne classic (the "real" Cayenne
    >> -- Cayenne's strength) isn't worthwhile. We may never get there and
    >> the cost of chasing the JPA specification is that Cayenne classic
    >> suffers. For people that want JPA, they'll almost always choose
    >> Hibernate because it is popular and/or because it is driving the
    >> specification. Even if Cayenne could satisfy someone's JPA checklist
    >> requirement, they'd most likely find another reason to not use
    >> Cayenne. That's fine. You can't appeal to everyone. Besides, the
    >> J2EE world seems to chase a different silver bullet every few years
    >> and JPA may evaporate as trends change.
    >>
    >> I think Cayenne should focus on what separates it from Hibernate/JPA
    >> and, in my mind, makes it better, plus add new features that make
    >> sense within the Cayenne world. Apple isn't gaining market share
    >> from
    >> Microsoft by trying to be more like Microsoft.
    >>
    >> Some examples:
    >>
    >> Improve Cayenne Modeler. This is a huge advantage of Cayenne over
    >> Hibernate. It is very useful as-is, but has some weaknesses, such
    >> as:
    >> can't open multiple models at the same time, related DbEntity and
    >> ObjEntity get too spread out in large models (too much scrolling),
    >> relationship mapping could be easier, no way to browse the database
    >> (I'm still working on my DBEdit clone, but it isn't close to finished
    >> yet), getting rid of HSQLDB for the preferences, etc. The better the
    >> modeler, the better the image of Cayenne -- especially to new users.
    >> From Gavin King's comments in the past, he thinks GUIs are for wimps
    >> and I don't think Hibernate will ever have one (in the core
    >> distribution) as long as he is the driving force behind Hibernate.
    >> This is a key distinguishing feature of Cayenne and should be
    >> leveraged. Even Apple has dropped their EOModeler support in OS X
    >> 10.5.
    >>
    >> Hibernate/JPA has nothing like an ObjectContext. This feature should
    >> be emphasized more. I doubt Hibernate/JPA will incorporate one
    >> anytime in the near future, either. This is another key
    >> distinguishing feature.
    >>
    >> Enhance ROP. I've been looking at Cappuccino lately and am intrigued
    >> by the idea of a robust web-based GUI that retrieves and saves all
    >> data by JSON. (Yes, there are other Web 2.0 apps that make heavy use
    >> of JSON, too.) If the Cayenne Web Service could vend data through
    >> JSON instead of Hessian, it might appeal to more people looking to go
    >> into Web 2.0.
    >>
    >> Better integration with Apache projects. The Click framework is now
    >> in the Apache Incubator and includes Cayenne support. It would also
    >> be nice to see Tapestry and Wicket include it, too. There aren't
    >> really robust installers (like what Apple did with WebObjects), but
    >> at
    >> a minimum it would be nice if there were Maven archetypes for various
    >> frameworks that could configure Cayenne support automatically.
    >> Google
    >> Summer of Code task, possibly?
    >>
    >> There are many other things (better marketing by having papers
    >> published, providing support for larger companies that might be
    >> willing to invest in it, etc), but I've been long-winded enough. All
    >> of these things take time and effort, but I think having a clear
    >> direction and goal would really help that, too.
    >>
    >> Thanks,
    >>
    >> mrg
    >>
    >> PS. I'm hoping for more comments, too ...
    >>
    >



    This archive was generated by hypermail 2.0.0 : Wed Apr 08 2009 - 17:26:56 EDT