Hi Peter,
Glad Cayenne worked out well for you and thanks for sharing Derby
experience.
On Sep 8, 2006, at 5:20 PM, Peter Karich wrote:
> If I create a new object, can I query the database (e.g. a
> SelectQuery) without a commit? I tried this, but it does not work?
> Should'nt I get this object from the cache instead of the db if it
> is new?
No you can't, as all queries (except for ObjectIdQuery) are not
matched against individual objects in the cache. Doing it otherwise
would turn Cayenne into RDBMS itself :-) If this is really important,
there are workarounds involving external transactions. If you really
need that and ready to jump a few hoops, we can discuss the details.
> How to get the available column headers, not only the headers which
> I defined in the modeler? (I wanted that users of gstpl can change
> the columns of my tables from within gstpl.)
> I tried SelectQuery select = new SelectQuery(tableName);
> QueryMetadata meta = select.getMetaData(getContext
> ().getEntityResolver());
> Iterator iter = meta.getDbEntity().getAttributes().iterator();
> colDefinition = new HashSet();
> while(iter.hasNext()) colDefinition.add(((DbAttribute)iter.next
> ()).getName());)
You are on the right track here. The only change - you need to map
ALL table columns in the DbEntity, but only map a subset of them in
the ObjEntity.
> What could happen if I make a raw sql update statement? (Docs says:
> '... and therefore may potentially leave object graph in an
> inconsistent state.') What does this mean for me as programmer?
It means stale data. E.g.:
// initial object state
assertEquals("a", myArtist.getName());
// run "update artist set name = 'b' where name = 'a'"
// this will fail, as the artist name is still 'a' in memory
assertEquals("b", myArtist.getName());
What you can do is DataContext.invalidateObjects() if you can guess
which artists are affected. Also 3.0 release introduces a
RefreshQuery [1] that allows to invalidate groups of objects. Though
3.0 is not yet released, and you'd have to build it yourself from SVN.
> Does cayenne support user management in any sense?
No.
> Why or when should I use 'Remote Object Persistenc'? (Sorry for
> that newbie question ...)
Most common scenario are desktop (Swing or SWT) apps that should not
or can not access the DB directly.
> Which license-agreement-files should I add for gstpl? (it only uses
> the cayenne.jar)
Each release contains a Cayenne license file (and licenses for all
dependencies) that you need to include with the distribution of any
Cayenne-based software. In 1.2 the licenses are located under
"cayenne_install_dir/docs/licences/" directory. Since you do not
distribute the modeler, you'll need "LICENSE" and "LICENSE.apache"
files.
> Last but not least: How do you earn money with cayenne?
If anybody knows the answer to this question, I'd like to know too :-)
Seriously, most folks who are involved in development (myself
included) are software consultants using Cayenne as a part of the
stack when implementing solutions for their customers. Second common
way (that is also a variety of consulting) is training and support
for the framework.
I guess a self-plug is due here - yes sometimes I do charge money to
solve Cayenne problems :-)
[1] http://cwiki.apache.org/confluence/display/CAY/RefreshQuery
Andrus
This archive was generated by hypermail 2.0.0 : Mon Sep 11 2006 - 14:13:08 EDT