Discussions

News: Cayenne Open Source OR Suite 1.0 Beta Released

  1. Cayenne OpenSource Object-Relational Suite 1.0 Beta has been released. Cayenne offers a full Object-Relational solution for all kinds of Java database applications.

    There is fewer and fewer Java developers who still question the usefulness of some sort of abstraction layer between the business objects and the database. Views normally differ on what kind of abstraction is the most appropriate. Java solutions range from home grown Data Access Objects wrapping the SQL calls, to CMP EJBs, to Object-Relational tools (including JDO).

    Cayenne offers a clean, full-featured, and (increasingly) user-friendly Object-Relational framework. It consists of O/R runtime libraries, a complete Swing GUI mapping tool, and a set of documentation and tutorials.

    Cayenne is hosted on objectstyle.org OpenSource Initiative website:
    http://objectstyle.org/cayenne/

    Read the 1.0 release notes:
    http://objectstyle.org/cayenne/RELEASE-NOTES-1.0b1.txt

    How does this compare to "the others" (Hibernate, Castor, JDO)

    There seem to be more OR mapping systems appearing every day. Do we need some consolidation?

    Threaded Messages (32)

  2. I compiled a list of open source Java-based O-R mapping tools

     http://jinx.swiki.net/284
  3. This link is mentioned in Cayenne FAQ:

       http://c2.com/cgi-bin/wiki?ObjectRelationalToolComparison
  4. You forgot TJDO[ Go to top ]

    http://tjdo.sourceforge.net
    It's based on the JDO standard
  5. Answering the question posted by the editor.

    1. There seem to be more OR mapping systems appearing every day. Do we need some consolidation?

    We started it in 2001 when there were only a few choices, mostly commercial. And nobody believed in O/R as a solution anyway. The choices where:

     - Castor (can't comment, never used it)
     - WebObjects/EOF from NeXT/Apple - a great commercial O/R. I still think it is the best in the clarity of design and "no-nonsense" appraoch.
     - TopLink from ObjectPeople, WebGain, and now Oracle. Good solid commercial O/R, though I still prefer EOF or Cayenne to its way of doing things.
     - CocoBase (can't comment on that)

    So Cayenne's philosophy became to have a completely free O/R that combines the best of the industry solutions. I hope we are doing well in this respect.

    Consolidation? Well, we haven't been approached by anyone yet with a viable proposal.


    2. How does this compare to "the others" (Hibernate, Castor, JDO)?

    GUI tools! Don't underestimate that. It means productivity. What is important that they are not a later add-on, but are being built by the core Cayenne team and are the integral part of the product.

    As for JDO compatibility... well we might approach that in the future, but my feeling is that the so-called "transparent" and object persistence goes in the direction of making the database a black box extension of the object model. Having worked with huge enterprise databases quiet a lot, I think this is a wrong approach (I know there are other views on this issue ;-)). Good database design and good object desing for the same system are not a one-to-one thing. They serve very different purposes in the system (and who said that Java will be the only language for a given data store access). "Classic" O/R on the other hand is something that bridges the two worlds instead of making the database a dependent entity.

    Having said that CayenneModeler will happily assist you with generating the database schema from object model and vice versa :-)

    Andrus
  6. I've looking for a O/R mapping tool for a long time, obviously free and open source.

    I will look at this tool, but If doesnt have a step by step learning tool I will dismiss.

    Is there a open source O/R tool easy to setup and complient to standards ?

    Your view "model object is not necessary to be = model relational" is right, but it doesnt mean it cant be transparent
  7. > I will look at this tool, but If doesnt have a step by step learning tool I will dismiss.

    This sounds like a serious threat :-). Take a look at "Quickstart" section in the UserGuide:

      http://objectstyle.org/cayenne/userguide/quickstart/index.html

    > Your view "model object is not necessary to be = model relational" is right, but it doesnt mean it cant be transparent.

    Right, this is the point I was trying to make. O/R must be transparent but if you need to go "under the hood", it should help you instead of obscuring things.
  8. O/R choices[ Go to top ]

    We started it in 2001 when there were only a few choices, mostly commercial. And nobody believed in O/R as a solution anyway. The choices where:

    >
    >  - Castor (can't comment, never used it)
    >  - WebObjects/EOF from NeXT/Apple - a great commercial O/R. I still think it is the best in the clarity of design and "no-nonsense" appraoch.
    >  - TopLink from ObjectPeople, WebGain, and now Oracle. Good solid commercial O/R, though I still prefer EOF or Cayenne to its way of doing things.
    >  - CocoBase (can't comment on that)
    >

    Just to make the list of choices more complete, JDX O/R Mapping technology from Software Tree has been available since early 1998. Recently, we released JDX version 4.0 with an enhanced GUI tool (JDXStudio) and many other useful features. More details including customer testimonials and a free eval download available here

    Damodar Periwal
    Software Tree, Inc.
    Simplify Data Integration
  9. Andrus,

    I haven't worked with EOF since 4.5 but have some years experience with WO/EOF. Apparently you are still involved with WO/EOF (WOLips looks *cool*).

    I was looking for some comparison "EOF vs. Cayenne" (apart from the $699) but could not find one on your site. Is there any? If not, I will dismiss:)

    Thanks
  10. Cayenne vs. EOF[ Go to top ]

    Bob,

    Umm... such comparison still has to be written.

    There is a definite similarity in architecture between the two, simplifying the learning (and some interoperability is actually built into the tools). There is one single view of multiple DataSources (EOObjectStoreCoordinator in EOF). There is database adapters, since databases do things differently, JDBC or no JDBC. There is a user session isolation (EOEditingContext in EOF).

    To the people I know, one of the biggest differences is the OpenSource part (not the price, but code availability). If something a person needs is not there, they can simply implement it and send back as a patch. This is really a big thing, however un-original the whole OpenSource argument may sound.

    Another difference is that EOF does not properly order the operations (insert, update, delete). You have to implement this yourself or define your tables as "deferrable". Cayenne does it, and this wasn't easy to implement either (kudos to a person on our team who is not as mathematically challenged as I am :-)).

    Other differences are the planned features (so Cayenne can't take credit for this now), e.g. cross context update notifications that work the same way within the same JVM and cross JVM. This is a serious shortcoming of EOF.
  11. hibernate tools[ Go to top ]

    [quote]GUI tools! Don't underestimate that[/quote]

    well i know there are some interesting hibernate plugins available like

    http://hibernator.sourceforge.net/

    and

    http://www.intellij.org/twiki/bin/view/Main/HibernateTools


    for ojb there is

    http://www.impart.ch/download/
  12. offtopic[ Go to top ]

    [quote]GUI tools! Don't underestimate that[/quote]

    > well i know there are some interesting hibernate plugins available

    Yes, but those are not really the same thing as what Cayenne has.
    AFAIK, Cayenne is the only solution that is based around using a
    GUI to create mappings. Hibernate users all use XDoclet or their
    preferred XML editor (eg. vi).

    I still insist that using a GUI for working with mappings is a Bad
    Thing (i'm a plain-text zealot), but each to his own; good for
    Cayenne that they have this distinguising feature :)
  13. A newbie's view[ Go to top ]

    Well, I don't have much Java development experience, don't even understand what the people talking about WO/EOF etc, but have 5+ years of web development experience by using ASP+MSSQL. The only app I did by using Java was a not internet accessible online store(learning only ;-)), plus a backend content management system by using IIS+Tomcat+Struts+Tile+MSSQL2K.

    I found that to manually map the tables to the java beans, manually manage the transactions across multiple databases were a nightmare experience to me. It did not look good either by creating the XML file then use whatever tool to generate the database tables and the relationships. Personally I would prefer to use MS SQL Enterprise Manager -> Diagram to layout the tables and the relationships. It is so much easier than to create/modify/check the XML text in TextPad!

    Cayenne caught my eyes by its great GUI tool and the great quick start example tutorial! After I went through the tutorial, I just felt that I don't look for no more for a database to java mapping tool. Its DataDomain - DataNode - DataMap architect and the transaction management functionality gave me a great relief from the headache to develop a centralizes Content Management Tool to manage mutiple websites/databases!
  14. Cayanne or Hibernate[ Go to top ]

    Would anyone like to compare Cayanne and Hibernate on performance, features, queries, and overall ease of use?
    Mapping really isn't that big of a deal, I'd need something more to move on from hibernate.
    Thanks.
    -Mike
  15. Cayanne or Hibernate[ Go to top ]

    Mike,

    why do you want to "move on from hibernate", any specific issues ?
  16. Cayanne or Hibernate[ Go to top ]

    Bill,
    Actually, I'd rather not "move from hibernate". But, would like to get a comparison of speed & robustness of query language between the two. I really like hibernate.
    -Mike
  17. Cayenne vs. EOF[ Go to top ]

    "Other differences are the planned features (so Cayenne can't take credit for this now), e.g. cross context update notifications that work the same way within the same JVM and cross JVM. This is a serious shortcoming of EOF. "

    Andrus, isn't that covered by David Neumanns change notification framework (at least back in the old 4.5 days)?

    Thanks for the quick summary.
  18. Cayenne vs. EOF[ Go to top ]

    Andrus, isn't that covered by David Neumanns change notification framework (at least back in the old 4.5 days)?


    I used it in 4.0, when it was still in a prototype state. It used HTTP for communication, and there was no automatic broadcast mechanism (you had to configure every application instance with a list of hosts/ports of other instances). Deploying this was well...very time consuming, so we stopped using it.

    I am pretty sure it has evolved since then though.
  19. Using O/R[ Go to top ]

    At the compay we are all Oracle, what do you think, we'll use Toplink or try another tool like Cayeene ?
  20. Using O/R[ Go to top ]

    Rafael: At the compay we are all Oracle, what do you think, we'll use Toplink or try another tool like Cayeene?

    If you're never going to move off of 9ias, then TopLink is an OK option, because it is bundled (i.e. no additional $).

    Otherwise, you'd be a lot less exposed going with a standardized JDO product (e.g. Solarmetric KODO JDO, Hemtech JDO Genie) with a more predictable cost for deploying to other servers.

    Peace,

    Cameron Purdy
    Tangosol, Inc.
    Coherence: Easily share live data across a cluster!
  21. Using O/R[ Go to top ]

    If you're never going to move off of 9ias, then TopLink is an OK option, because it is bundled (i.e. no additional $).



    And I presume that Tangosol's products are free, open source and support is extensive and ... and... FREEEEEEEE
  22. Using O/R[ Go to top ]

    If you're never going to move off of 9ias, then TopLink is an OK option, because it is bundled (i.e. no additional $).

    >
    >
    > And I presume that Tangosol's products are free, open source and support is extensive and ... and... FREEEEEEEE


    Cameron,

    Mille excuses, I didn't check your links before posting. Ignore my previous message. Lately, I'm so against open source that my vision is blurred.
  23. Using O/R[ Go to top ]

    At the compay we are all Oracle, what do you think, we'll use Toplink or try another tool like Cayeene ?


    Just like with any technology, when choosing an O/R tool, you must evaluate all the factors and choose what is best for you. Like cost of license, cost of learning/training, developer productivity, ease of maintenance, etc.

    TopLink is a good solid product. I am using it almost daily with Oracle and it works OK. The company I am currently affiliated with is investigating a TopLink -> Cayenne migration though, due to the last of the quoted reasons - maintenance.

    Under heavy load applications start to reveal subtle issues that are not noticeable during development and testing. When something weird happens in the data layer, even paid TopLink support may be inadequate in response time and offerred solution (and price) compared to having the full control over the source code. This is an important factor for us now.
  24. Cayenne vs. EOF[ Go to top ]

    I used it in 4.0, when it was still in a prototype state. It used HTTP for communication, and there was no automatic broadcast mechanism (you had to configure every application instance with a list of hosts/ports of other instances). Deploying this was well...very time consuming, so we stopped using it.

    I am pretty sure it has evolved since then though. <

    Project WONDER (http://wonder.sf.net) has updated the transport mechanism to JMS. IIRC this works via topics ... Haven't used it, though.

    Still, while the entire ChangeNotification thing is nice, I see it as an integral part of the O/R framework itself.

    -dirk
  25. Interesting[ Go to top ]

    Hi!

    Your product announcement came just in time. I'm looking for my next OR mapper, after having used castor for the past 2 years. I don't have much knowledge in OR mapper, having created a simple one back in 98 under the guidance of an OO mentor and created another simple one for a project in 2000, before using castor heavily in 2001 until now.

    I'm thinking of using hibernate after a few days of using it, but your marketing is good enough to tempt me to try your product out ;-)

    I'll try and post a simple summary of the outcome plus whatever comparison when (if!) I'm done.

    Thanks again.
  26. Ur Expectation might end here...[ Go to top ]

    Hi!
                 Hi Ur product announcement looks good and creates a good competion in the market. The "transparent" and object persistence goes in the direction of making the database as a good extension of the Object model. Hope ur product will satisfy this.

             I've using another product for our company project development. Anyhow i check your product and i'll to put some comments on that according to my experience whether this product satisfy all my needs or not...

           And the product which one my company is using for the past six months is from ObjectFrontier. It supports * UML Compatible Object Modeling, Model Driven architecture, IDE integration, OR Mapping ( Horizontal, Vertical, collapsed, binary association and agrication mapping), Automatic code generation, Reverse engineering and it's run time environment supports Caching ( transactional cache, distributed cache, read-only cache), prepared statement caching, In memory query evaluation like this... And their products suits in the major application servers and the major Database application.

    Hope ur product might satisfy the needs in the latest survey.

    Thankx
    Siva
  27. Does it support caching?[ Go to top ]

    With Hibernate, you can configure a JVM level cache (which may not
    be properly working in a cluster yet, not sure, but it's on Hibernate's
    road map). Will Cayenne support such a cache, maybe make it pluggable?
    And support a cluster?

    Thank's
  28. caching[ Go to top ]

    With Hibernate, you can configure a JVM level cache (which may not

    be properly working in a cluster yet, not sure, but it's on Hibernate's
    road map). <
    Latest release of Hibernate (2.0rc1) supports a clustered JCS cache (at least experimentally). However, the current JCS clustered cache implementation has been questioned by some people and seems a little immature. Version 2.1 of Hibernate will have user-visible support for pluggable cache implementations. *Architecturally*, pluggable cache is already implemented; we just need to resolve issues about how to *configure* this stuff conveniently (a little difficult because Hibernate allows you to configure caching strategies at the individual class level).

    There is also an existing patch in our patch manager that lets you use SwarmCache (based on JavaGroups).
  29. Does it support caching?[ Go to top ]

    With Cayenne you can also set up a JVM level cache, though session-level is a default.

    Current implementation of VM cache is somewhat a hack. The goal in this respect is that any cache beyond session must work consistently within the JVM and across different VMs (not necessarily in the cluster). This is planned as the major feature in 1.1.
  30. I just got Cayenne working in a few hours on my existing tables! I strongly believe that the GUI is what puts Cayenne ahead of other Open Source similar tools (and also some proprietary ones).
    But before using it in a real production project I would expect some caching options and enhancements, otherwise its usage could be limited.
    Also a more detailed documentation (with more examples about API usage) would be appreciated!
  31. Yes, I agree, it seems quite easy to use, but what about complex queries and joins? Have you had a chance to try it on recoursive queries? Could some cayenne guy give us some advice on those subjects? Say, some sample queries on a tree structure. I'm afraid at using it for a serious job and finding out I just can't extract my data easily.

    Nice job at first look, anyway.
  32. As I am one of the Cayenne guys :-)...

    You can easily do queries on a tree structure (using relationships in the expression). A simple example:

      Expression e = ExpressionFactory.likeExp("artist.artistName", "Andrus%");
      SelectQuery q = new SelectQuery(Painting.class, e);
      List paintings = dataContext.performQuery(q);

    Andrus
  33. self relationships[ Go to top ]

    and how does it manage self relationships?

    Like this:

    Directory (entity)
      subFolders (self relationship)
         Directory
            subFolders
                etc...

    I had some problems with it ("create reverse" check gets stuck).

    Also: can I retrieve an element directly from his "path" ("/home/test/firstdir/seconddir/")? That's what I mean with "recursive query".