Re: Talking to multiple database types with Cayenne.

From: Robert Zeigler (robert.zeigle..mail.com)
Date: Tue Oct 21 2008 - 10:57:29 EDT

  • Next message: Michael Shea: "Re: Talking to multiple database types with Cayenne."

    Interestingly, using autoincrement in mysql is probably a /hit/ in
    performance, compared to the default strategy. Cayenne has to ask
    mysql what the id was after every insert.
    In the default PK generation scheme, cayenne manages the ids. Hence,
    cayenne can batch ids and not have to talk to the db about every pk
    for every object.

    Robert

    On Oct 21, 2008, at 10/219:12 AM , Michael Shea wrote:

    > Hi Andrus,
    >
    > Thanks for your reply... Of course, this is almost exactly what
    > Cayenne is for. I erred in the question I was asking, unfortunately,
    > so I will ask it properly this time... =). I really just have a
    > minor question to ask:
    >
    > My two database schemas are *almost* identical, but not quite. The
    > MySQL database creates primary keys on certain tables by using an
    > AUTOINCREMENT column. The Oracle database creates primary keys on
    > the equivalent tables by using a custom sequence. Is there any way
    > for me to change the primary key generation strategy depending on
    > which DBMS is in use? Or will I have to choose a strategy that works
    > equally on both Oracle and on MySQL (ie, switch to using the default
    > strategy?).
    >
    > I would ideally like to continue using the auto-increment columns on
    > MySQL, since that intuitively seems like the most efficient method
    > to me. I have experimented with customizing the mapping.xml file at
    > runtime based on which type of database I'll be using, before making
    > any calls to cayenne, that seems to work. But it's also pretty
    > hacky, and will make maintenance more painful.
    >
    > Thanks,
    >
    >
    > Mike Shea.
    >
    >
    >> Hi Michael,
    >>
    >> Cayenne will detect the database type automatically on startup and
    >> use the right adapter. So yes, use JNDI to abstract connection
    >> information, beyond that no need for any extra tricks. You generic
    >> Cayenne mapping will just work regardless of the db type.
    >>
    >> Andrus
    >>
    >>
    >>
    >> On Oct 20, 2008, at 11:42 AM, Michael Shea wrote:
    >>
    >>> Hi guys,
    >>>
    >>> I am working on a project in which I have to support multiple
    >>> database types. They do not have to be supported simultaneously -
    >>> I need my program to be able to run whether I am using an Oracle
    >>> database or a MySQL database (the databases will have the same
    >>> schema), but the database type does not change at runtime.
    >>>
    >>> I am wondering if there are any best practices or recommendations
    >>> for how to approach this problem. Currently, I am planning on
    >>> simply creating two sets of cayenne configuration files in
    >>> different directories (ie, a map.xml and a cayenne.xml file), and
    >>> just adding one or the other of these directories to the
    >>> classpath, depending on some initial configuration parameters that
    >>> tell me what type of database I'm accessing. The datasource is
    >>> defined via JNDI.
    >>>
    >>> Does anyone think that this is a good idea or a bad idea, or have
    >>> a better way of doing this? =) I am using Cayenne 2.0.4.
    >>>
    >>> Thanks!
    >>>
    >>>
    >>> Mike Shea.
    >>>
    >>
    >



    This archive was generated by hypermail 2.0.0 : Tue Oct 21 2008 - 10:58:18 EDT