Re: performing count

From: Andrus Adamchik (andru..bjectstyle.org)
Date: Mon Jun 04 2007 - 03:05:57 EDT

  • Next message: Andrus Adamchik: "Re: Creating Compound PKs"

    On Jun 2, 2007, at 4:29 AM, Michael Gentry wrote:

    > Well, it would work without you providing a DataContext by creating a
    > default DataContext and using it (obviously, only useful if the model
    > is simple -- hence also needing a version where you provide the
    > DataContext to use).

    I wouldn't even bother with a version that doesn't take a context -
    IMO we should minimize the number of places in the framework that
    assume a singleton Configuration based stack structure (even though
    it is a default). Ideally we should get rid our code of this
    assumption completely. Otherwise the usability of Cayenne across
    various J2EE (and other) environments will suffer greatly.

    > We do have utility classes already, like DataObjectUtils (which are
    > mainly containers for static methods -- aka functions). This would be
    > a "real" class (or extension of an existing class), though.

    I am with Matt on the point that any new utility should preferably
    stay within the well understood framework concepts. A query that runs
    itself is definitely NOT something Cayenne has ever done. I think we
    can squeeze it in the current framework, tweaking what has been
    already proposed - a CountQuery, by adding a new method to
    DataObjectUtils: intValueForQuery (analogous to existing
    "objectForQuery"). So one can do:

    Query q = new CountQuery(Artist.class, qualfier);
    int count = DataObjectUtils.intValueForQuery(context, q);

    > I'll ponder this a bit more. Doing the basic count would be pretty
    > easy, but getting it to work with a qualifier will be a bit more work
    > to make it nice.

    BTW with EJBQL coming in 3.0 should provide the runtime to run the
    following object syntax:

        "select count(a) from Artist a where a.name = 'Dali'"

    So this will provide a ready-to-use runtime for the classic count
    query. Although if somebody wants to implement the count-with-
    qualifier backend differently for the interim, that's fine too.

    Andrus



    This archive was generated by hypermail 2.0.0 : Mon Jun 04 2007 - 03:06:22 EDT