cayenne-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Durchholz, Joachim" <Joachim.Durchh...@hennig-fahrzeugteile.de>
Subject RE: [jira] [Created] (CAY-1724) Add 'Property' class for easier and better Expression creation
Date Wed, 11 Jul 2012 09:00:51 GMT
+10.
Most ORMs make it incredibly painful to get at the metadata for a column.
Easily generating queries is just one way to put this to use; another would be updates to
the database schema (just use the metadata for old and new schema and glue a bit of transformation
code between them); a third would be attaching more metadata such as per-property validation
or formatting rules.

SimpleORM might be another source of inspiration.
It's architecturally centered around the metadata, not the Pojos, so it might have details
differently in an interesting manner.

> John Huss created CAY-1724:
> ------------------------------
> 
>             Summary: Add 'Property' class for easier and better Expression creation
>                 Key: CAY-1724
>                 URL: https://issues.apache.org/jira/browse/CAY-1724
>             Project: Cayenne
>          Issue Type: Improvement
>          Components: Core Library
>    Affects Versions: 3.2M1
>            Reporter: John Huss
>            Priority: Minor
>         Attachments: Property.java
> 
> Project Wonder (WebObjects) has a class which is basically just a wrapper around an attribute
or relationship name that gives you a way to create Expressions in type-safe manner and with
minimal effort.  Also sort orderings can be easily generated.  In Wonder, these "property"
objects are part of the entity template so they are generated automatically.
> 
> So for example:
> 
> public class _Artist extends CayenneDataObject {
>    public static final Property<String> NAME = new 
> Property<String>(NAME_PROPERTY); ...
> }
> 
> Then client code can do things like:
> 
> new SelectQuery(Artist.class, NAME.eq("Pablo").andExp(AGE.gt(40)), 
> AGE.descs());
> 
> This would select all artists with name equal to Pablo and age greater than 40 and order
them in descending age order.
> 
> This concept has been proven to work incredibly well with WebObjects.  It's almost as
readable as using plain strings but has complete compile-time checking for the property name
and the type of the objects it is compared with.
> 
> A complete implementation is attached.  It's very simple since ExpressionFactory does
the work.  If this is accepted, it would make sense to modify the built-in entity templates
to generate Property constants for all of the properties.
> 
> --
> This message is automatically generated by JIRA.
> If you think it was sent incorrectly, please contact your JIRA 
> administrators: 
> https://issues.apache.org/jira/secure/ContactAdministrators!default.js
> pa For more information on JIRA, see: 
> http://www.atlassian.com/software/jira
> 
> 
> 


Mime
View raw message