Re: question about key generation

From: Andrus Adamchik (andru..bjectstyle.org)
Date: Wed Feb 23 2005 - 20:20:18 EST

  • Next message: Andrus Adamchik: "Re: Path error"

    Didn't realize you are using 1.2 that adds support for
    auto-incrementing pk columns... Thought you are still on 1.1. Good
    thing is that as far as Cayenne app DB transparency is concerned, this
    doesn't change a thing - if you mark PK columns as "generated", Cayenne
    will automatically default to "auto increment" on MySQL, and fall back
    to sequences on Oracle. Nothing special is needed for this to happen.

    Now, if you want to INSERT records from non-Cayenne
    applications/scripts, you have to choose some mechanism that works for
    you, as generally there is no universal "standard" for PK generation
    and on every DB you have a number of reasonable choices. I guess you'll
    have to settle on some least common denominator approach and let
    Cayenne use it. If this approach happens to be the one already
    supported by Cayenne (such as "AUTO_PK_SUPPORT" table), you'll minimize
    your effort in making Cayenne compatible, but will need to make sure
    others follow the rules. Otherwise you'll have to implement your own
    PkGenerator (or subclass an existing one), which is fairly trivial.

    Andrus

    On Feb 23, 2005, at 3:48 PM, Roman D wrote:
    > Thanks Andrus,
    >
    > To put in the practical way; Let's say I'm developing application with
    > Mysql, then I deploy it to production server running Oracle.
    > I can't use "Cayenne Generated Primary Key" because database structure
    > will be diffrent on difrent DB types -on mysql column type will have
    > auto_increment and on Oracle it will have an additional sequence.
    >
    > Okay, then I should use "Generate Primary Key Support" (chapter 4.6).
    > It seems like DB-independent, using an additional special
    > "AUTO_PK_SUPPORT" sequence table[s].
    > It's okay but what if I need to access same database from non-Cayenne
    > solution or non-Java, like perl? (Though I can teach perl script to
    > use "AUTO_PK_SUPPORT" but that's out of scope).
    >
    > What is the best practice to have database structure which is
    > completely free of DB-specific features (e.g. not using mysql
    > auto_increment or Oracle sequence) and is it possible without having
    > Cayenne-specific "AUTO_PK_SUPPORT" tables?
    >
    > Thanks,
    > Roman.



    This archive was generated by hypermail 2.0.0 : Wed Feb 23 2005 - 20:20:21 EST