Cayenne 101

From: Joe Baldwin (jfbaldwi..arthlink.net)
Date: Fri Dec 26 2008 - 12:32:54 EST

  • Next message: Pierre Lavignotte: "Re: Cayenne 101"

    I have a few questions about best practices. I have done some
    experimenting, have read what I could find, and have some questions
    about some elementary Cayenne usage concerning Add & Delete with a
    Parent-ChildList design. (I have recently experienced some odd
    behavior that may be due to a fundamental misunderstanding of
    DataContext rules.)

    Environment: I am using 3.0 M4 with MySQL and Tomcat JSP
    DataContext: I am getting the context using:
    DataContext.getThreadDataContext();
    Example Design:
            E1 has a list of E2's
    that is:
            E2 is a child of E1 and is a many-to-one relationship.
            The E1 relationship is called "E2List" and the reverse relationship
    on E2 is called "E1".

    Questions:
    1. When creating and associating E2 children is it more proper to do
    the following:

            DataContext dc = DataContext.getThreadDataContext();
            ** [get E1 via a DataContext query]
            E2 e2 = new E2();
            e2.setE1(e1); // I **assume** this registers e2 with the Context &
    adds e2 to e1's list
            dc.commitChanges();

    OR do you need to do as your example suggests:

            DataContext dc = DataContext.getThreadDataContext();
            E2 e2 = (E2) dc.newObject(E2.class);
            e2.setE1(e1);
            dc.commitChanges();

    OR is there a better way?

    2. Removal of a Child
    Can you remove the child using:
            DataContext dc = DataContext.getThreadDataContext();
            dc.deleteObject(e2);
            dc.commitChangesToParent();
            dc.commitChanges();

    or must you do it via the parent:
            DataContext dc = DataContext.getThreadDataContext();
            E1.getE2List().remove(e2);
            dc.commitChanges();

    (Note: the second method seems to work better.)

    Thanks,
    Joe



    This archive was generated by hypermail 2.0.0 : Fri Dec 26 2008 - 12:33:30 EST