Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister

Re: Perl ORM comparison (Class::DBI vs. DBIx::Class vs. Rose::DB::Object)

by siracusa (Friar)
on Aug 04, 2008 at 00:34 UTC ( #701953=note: print w/replies, xml ) Need Help??

in reply to Perl ORM comparison (Class::DBI vs. DBIx::Class vs. Rose::DB::Object)

Only supports pg, MySQL, SQLite, and Informix for the moment. Oracle support is there but apparently not full.

FWIW, Oracle support is basically complete. Pretty much everything should work, but the Oracle code has not been tested nearly as much as the other drivers so I left the waffling in the documentation for now.

Column inflation/deflation is not customizable

It sure is. Check out the inflate/deflate column triggers.

No client-side triggers. (but cascading deletes and loads are supported.)

There are client-side column triggers. Triggers on load(), save(), etc. can be added with the usual method wrappers (override method, call SUPER::) or using any generic subroutine trigger/wrapper module on CPAN.

Executing arbitrary SQL is really hard to get at (need to use DBH directly) and there is no bridge between that SQL and the ORM. (is this true?)
There are a few methods where you can supply complete raw SQL queries and get back ORM objects (e.g., get_objects_from_sql()), but yes, it's rare (and kind of contrary to the purose of an ORM, after all). Literal SQL snippets can be used almost anywhere, however, using the common (among Perl ORMs) convention of passing a reference to a scalar.
No distinction for "primary/essential/other/all" column kinds except for primary key. (Maybe a performance issue for large columns. However, apparently, Rose::DB::Object is otherwise the best performer.)

The concept exists, just in a different form. Columns may be marked as "lazy," in which case they are not automatically loaded when an object is load()ed, but rather are loaded on demand.

No support for UUID columns.

I'm not sure what you mean by that, but if I'm close, you should be able to do that kind of thing using the existing column defaults mechanism combined with something like Scalar::Defer.

  • Comment on Re: Perl ORM comparison (Class::DBI vs. DBIx::Class vs. Rose::DB::Object)

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://701953]
[shmem]: of course
[shmem]: the members of @another_array are conflated to @array
[shmem]: try it out:
[Lady_Aleena]: shmem, thanks. I'm am way out of practice.
[shmem]: perl -lE '@foo = (0..3);@bar = (4..7); push @foo,@bar; say for @foo'
[Lady_Aleena]: shmem, I feel like an idiot for forgetting something so basic.
shmem puts a big cauldron of "silly con charme" on the table in the refectorium
[reisinge]: 'push @foo, @bar' is the same as '@foo = (@foo ,@bar)' ?

How do I use this? | Other CB clients
Other Users?
Others perusing the Monastery: (5)
As of 2017-04-27 11:31 GMT
Find Nodes?
    Voting Booth?
    I'm a fool:

    Results (503 votes). Check out past polls.