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?
-
Cayenne Open Source OR Suite 1.0 Beta Released (32 messages)
- Posted by: Andrus Adamchik
- Posted on: April 21 2003 15:02 EDT
Threaded Messages (32)
- re: O/R mapping tools, open source, Java by Sean Sullivan on April 22 2003 12:54 EDT
- Here is a page that I started way back on the original Wiki by Andrus Adamchik on April 22 2003 13:02 EDT
- You forgot TJDO by marc schipperheyn on April 23 2003 12:36 EDT
- How is Cayenne different from "others" by Andrus Adamchik on April 22 2003 13:23 EDT
- How is Cayenne different from "others" by Erik Bengtson on April 22 2003 13:32 EDT
- How is Cayenne different from "others" by Andrus Adamchik on April 22 2003 02:06 EDT
- O/R choices by Damodar Periwal on April 22 2003 15:08 EDT
- How is Cayenne different from "others" by bob farmer on April 22 2003 16:05 EDT
-
Cayenne vs. EOF by Andrus Adamchik on April 22 2003 04:58 EDT
-
hibernate tools by jelmer kuperus on April 22 2003 09:01 EDT
-
offtopic by Gavin King on April 22 2003 11:23 EDT
-
A newbie's view by Bill Fan on April 23 2003 08:03 EDT
-
Cayanne or Hibernate by Mike Joslyn on April 23 2003 09:08 EDT
-
Cayanne or Hibernate by bill salamanca on April 23 2003 08:08 EDT
- Cayanne or Hibernate by Mike Joslyn on April 24 2003 09:35 EDT
-
Cayanne or Hibernate by bill salamanca on April 23 2003 08:08 EDT
-
Cayanne or Hibernate by Mike Joslyn on April 23 2003 09:08 EDT
-
A newbie's view by Bill Fan on April 23 2003 08:03 EDT
-
offtopic by Gavin King on April 22 2003 11:23 EDT
-
Cayenne vs. EOF by bob farmer on April 23 2003 11:02 EDT
-
Cayenne vs. EOF by Andrus Adamchik on April 23 2003 11:42 EDT
-
Using O/R by Rafael Moreno Casado on April 23 2003 11:59 EDT
- Using O/R by Cameron Purdy on April 23 2003 12:58 EDT
- Using O/R by Andrus Adamchik on April 23 2003 01:05 EDT
-
Using O/R by Rafael Moreno Casado on April 23 2003 11:59 EDT
- Cayenne vs. EOF by Dirk Olmes on April 25 2003 11:35 EDT
-
Cayenne vs. EOF by Andrus Adamchik on April 23 2003 11:42 EDT
-
hibernate tools by jelmer kuperus on April 22 2003 09:01 EDT
-
Cayenne vs. EOF by Andrus Adamchik on April 22 2003 04:58 EDT
- How is Cayenne different from "others" by Erik Bengtson on April 22 2003 13:32 EDT
- Interesting by Hamdi Yusof on April 22 2003 21:16 EDT
- Ur Expectation might end here... by P.Siva Kumar on April 25 2003 09:17 EDT
- Does it support caching? by Andrej Gabara on April 24 2003 01:28 EDT
- caching by Gavin King on April 24 2003 03:20 EDT
- Does it support caching? by Andrus Adamchik on April 24 2003 11:17 EDT
-
Very nice tool, but caching should be a must by Romano Guizzetti on April 28 2003 04:22 EDT
-
Very nice tool, but caching should be a must by Raffaele Guidi on April 28 2003 05:34 EDT
-
Very nice tool, but caching should be a must by Andrus Adamchik on April 28 2003 06:10 EDT
- self relationships by Raffaele Guidi on May 19 2003 07:59 EDT
-
Very nice tool, but caching should be a must by Andrus Adamchik on April 28 2003 06:10 EDT
-
Very nice tool, but caching should be a must by Raffaele Guidi on April 28 2003 05:34 EDT
-
Very nice tool, but caching should be a must by Romano Guizzetti on April 28 2003 04:22 EDT
-
re: O/R mapping tools, open source, Java[ Go to top ]
- Posted by: Sean Sullivan
- Posted on: April 22 2003 12:54 EDT
- in response to Andrus Adamchik
-
Here is a page that I started way back on the original Wiki[ Go to top ]
- Posted by: Andrus Adamchik
- Posted on: April 22 2003 13:02 EDT
- in response to Sean Sullivan
-
You forgot TJDO[ Go to top ]
- Posted by: marc schipperheyn
- Posted on: April 23 2003 12:36 EDT
- in response to Sean Sullivan
http://tjdo.sourceforge.net
It's based on the JDO standard -
How is Cayenne different from "others"[ Go to top ]
- Posted by: Andrus Adamchik
- Posted on: April 22 2003 13:23 EDT
- in response to Andrus Adamchik
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 -
How is Cayenne different from "others"[ Go to top ]
- Posted by: Erik Bengtson
- Posted on: April 22 2003 13:32 EDT
- in response to Andrus Adamchik
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 -
How is Cayenne different from "others"[ Go to top ]
- Posted by: Andrus Adamchik
- Posted on: April 22 2003 14:06 EDT
- in response to Erik Bengtson
> 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. -
O/R choices[ Go to top ]
- Posted by: Damodar Periwal
- Posted on: April 22 2003 15:08 EDT
- in response to Andrus Adamchik
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 -
How is Cayenne different from "others"[ Go to top ]
- Posted by: bob farmer
- Posted on: April 22 2003 16:05 EDT
- in response to Andrus Adamchik
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 -
Cayenne vs. EOF[ Go to top ]
- Posted by: Andrus Adamchik
- Posted on: April 22 2003 16:58 EDT
- in response to bob farmer
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. -
hibernate tools[ Go to top ]
- Posted by: jelmer kuperus
- Posted on: April 22 2003 21:01 EDT
- in response to Andrus Adamchik
[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/ -
offtopic[ Go to top ]
- Posted by: Gavin King
- Posted on: April 22 2003 23:23 EDT
- in response to jelmer kuperus
[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 :) -
A newbie's view[ Go to top ]
- Posted by: Bill Fan
- Posted on: April 23 2003 08:03 EDT
- in response to Gavin King
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! -
Cayanne or Hibernate[ Go to top ]
- Posted by: Mike Joslyn
- Posted on: April 23 2003 09:08 EDT
- in response to Bill Fan
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 -
Cayanne or Hibernate[ Go to top ]
- Posted by: bill salamanca
- Posted on: April 23 2003 20:08 EDT
- in response to Mike Joslyn
Mike,
why do you want to "move on from hibernate", any specific issues ? -
Cayanne or Hibernate[ Go to top ]
- Posted by: Mike Joslyn
- Posted on: April 24 2003 09:35 EDT
- in response to bill salamanca
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 -
Cayenne vs. EOF[ Go to top ]
- Posted by: bob farmer
- Posted on: April 23 2003 11:02 EDT
- in response to Andrus Adamchik
"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. -
Cayenne vs. EOF[ Go to top ]
- Posted by: Andrus Adamchik
- Posted on: April 23 2003 11:42 EDT
- in response to bob farmer
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. -
Using O/R[ Go to top ]
- Posted by: Rafael Moreno Casado
- Posted on: April 23 2003 11:59 EDT
- in response to Andrus Adamchik
At the compay we are all Oracle, what do you think, we'll use Toplink or try another tool like Cayeene ? -
Using O/R[ Go to top ]
- Posted by: Cameron Purdy
- Posted on: April 23 2003 12:58 EDT
- in response to Rafael Moreno Casado
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! -
Using O/R[ Go to top ]
- Posted by: DODO DODO
- Posted on: April 27 2003 14:33 EDT
- in response to Cameron Purdy
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 -
Using O/R[ Go to top ]
- Posted by: DODO DODO
- Posted on: April 27 2003 14:47 EDT
- in response to DODO DODO
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. -
Using O/R[ Go to top ]
- Posted by: Andrus Adamchik
- Posted on: April 23 2003 13:05 EDT
- in response to Rafael Moreno Casado
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. -
Cayenne vs. EOF[ Go to top ]
- Posted by: Dirk Olmes
- Posted on: April 25 2003 23:35 EDT
- in response to bob farmer
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 -
Interesting[ Go to top ]
- Posted by: Hamdi Yusof
- Posted on: April 22 2003 21:16 EDT
- in response to Andrus Adamchik
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. -
Ur Expectation might end here...[ Go to top ]
- Posted by: P.Siva Kumar
- Posted on: April 25 2003 09:17 EDT
- in response to Hamdi Yusof
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 -
Does it support caching?[ Go to top ]
- Posted by: Andrej Gabara
- Posted on: April 24 2003 01:28 EDT
- in response to Andrus Adamchik
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 -
caching[ Go to top ]
- Posted by: Gavin King
- Posted on: April 24 2003 03:20 EDT
- in response to Andrej Gabara
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). -
Does it support caching?[ Go to top ]
- Posted by: Andrus Adamchik
- Posted on: April 24 2003 11:17 EDT
- in response to Andrej Gabara
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. -
Very nice tool, but caching should be a must[ Go to top ]
- Posted by: Romano Guizzetti
- Posted on: April 28 2003 04:22 EDT
- in response to Andrus Adamchik
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! -
Very nice tool, but caching should be a must[ Go to top ]
- Posted by: Raffaele Guidi
- Posted on: April 28 2003 17:34 EDT
- in response to Romano Guizzetti
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. -
Very nice tool, but caching should be a must[ Go to top ]
- Posted by: Andrus Adamchik
- Posted on: April 28 2003 18:10 EDT
- in response to Raffaele Guidi
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 -
self relationships[ Go to top ]
- Posted by: Raffaele Guidi
- Posted on: May 19 2003 19:59 EDT
- in response to Andrus Adamchik
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".