Limitations of all Ruby ORMs

Discussion in 'Ruby' started by Alexey Petrushin, Jun 8, 2008.

  1. Hello, last days i investigated three ORM frameworks: ActiveRecords,
    DataMapper and Og.
    And found that they all shares almost same limitations (when i write
    'support' i mean that tool allows to solve task 'simply' and
    'effectively').

    1. Inheritance support.
    None of these frameworks hasn't inheritance support. You forced either
    by 'single table inheritance' (suitable only for similar objects) or you
    can use 'multiple tables' but lose polymorphism ('Parent.find(...)'
    searches only in 'parent' table and do not searches in his children's
    tables).

    2. 'General reference'.
    So, one object can make reference to any other object. For example
    'Catalog' has 'content' reference, that references 'Article', 'Image',
    'File'.
    ActiveRecords - support, Og - partly, DM not, as far as i know.

    3. Single ID space.
    The continuation to 'General reference'. Ability to find object only by
    his ID.
    db.find(ID)
    No matter is it Article, User or something else.

    I really miss these features :-(.

    The question is - is there any materials or article with explanations
    how to implement all these features the best way?

    Thanks!
    --
    Posted via http://www.ruby-forum.com/.
     
    Alexey Petrushin, Jun 8, 2008
    #1
    1. Advertising

  2. Alexey Petrushin wrote:
    > Hello, last days i investigated three ORM frameworks: ActiveRecords,
    > DataMapper and Og.
    > And found that they all shares almost same limitations (when i write
    > 'support' i mean that tool allows to solve task 'simply' and
    > 'effectively').
    >
    > 1. Inheritance support.
    > 2. 'General reference'.
    > 3. Single ID space.


    Does Hibernate have all these features? Because there's an
    ActiveHibernate project out there currently not moving forward. I'd love
    to see some folks continue working on it, putting a nice Ruby face on
    top of Hibernate.

    http://code.google.com/p/activehibernate/

    - Charlie
     
    Charles Oliver Nutter, Jun 8, 2008
    #2
    1. Advertising

  3. Alexey Petrushin

    Sam Smoot Guest

    On Jun 8, 11:57 am, Alexey Petrushin <> wrote:
    > Hello, last days i investigated three ORM frameworks: ActiveRecords,DataMapperand Og.
    > And found that they all shares almost same limitations (when i write
    > 'support' i mean that tool allows to solve task 'simply' and
    > 'effectively').
    >
    > 1. Inheritance support.
    > None of these frameworks hasn't inheritance support. You forced either
    > by 'single table inheritance' (suitable only for similar objects) or you
    > can use 'multiple tables' but lose polymorphism ('Parent.find(...)'
    > searches only in 'parent' table and do not searches in his children's
    > tables).
    >
    > 2. 'General reference'.
    > So, one object can make reference to any other object. For example
    > 'Catalog' has 'content' reference, that references 'Article', 'Image',
    > 'File'.
    > ActiveRecords - support, Og - partly, DM not, as far as i know.
    >
    > 3. Single ID space.
    > The continuation to 'General reference'. Ability to find object only by
    > his ID.
    >   db.find(ID)
    > No matter is it Article, User or something else.
    >
    > I really miss these features :-(.
    >
    > The question is - is there any materials or article with explanations
    > how to implement all these features the best way?
    >
    > Thanks!
    > --
    > Posted viahttp://www.ruby-forum.com/.


    1. Agreed. We'd (DataMapper) like to support all 3 forms, but it'll
    probably be post-1.0.

    2. Yes, this is possible. It's probably not all that hard either. Just
    haven't come across a personal use-case.

    3. Technically, same as above, but it just looks crazy to me. I don't
    see DM ever supporting this, and I'd be surprised if Hibernate did
    either (though I could be wrong).

    So for DM at least, number 2 would involve making the Query object
    accept multiple models. Easy enough. Then it's conditions and field
    and links, etc methods would need to accept a model as a parameter so
    the method could return the properties (table/column information)
    specific to that model. Then the DataObjectsAdapter would simply map
    each model in the Query object to SQL and perform a join for a UNION
    statement. It would be the Query object's responsibility to pad out
    uneven fields between it's models.

    And that's that. I don't see it taking more than a day to implement at
    most.

    But again, DM's features are driven by the people willing to scratch
    an itch. If that sounds like you, feel free to drop on the IRC channel
    (irc.freenode.net#datamapper). As the Rubinius guys say: If you can
    breath, you can get commit access.

    -Sam
     
    Sam Smoot, Jul 12, 2008
    #3
  4. Alexey Petrushin, Jun 16, 2009
    #4
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. gvk

    ORMs for applications written in C

    gvk, Jan 2, 2011, in forum: C Programming
    Replies:
    1
    Views:
    314
    Malcolm McLean
    Jan 9, 2011
  2. gvk

    Re: ORMs for applications written in C

    gvk, Jan 8, 2011, in forum: C Programming
    Replies:
    2
    Views:
    337
    Nobody
    Jan 8, 2011
  3. Travis Parks
    Replies:
    10
    Views:
    679
    Travis Parks
    Nov 12, 2011
  4. Replies:
    1
    Views:
    361
    Nathan Rice
    Nov 10, 2011
  5. Alec Taylor

    How to choose between ORMs?

    Alec Taylor, Apr 3, 2013, in forum: Python
    Replies:
    1
    Views:
    132
    Roy Smith
    Apr 3, 2013
Loading...

Share This Page