This is an SQL to OO mapper with an object API inspired by Class::DBI (with
a compatibility layer as a springboard for porting) and a resultset API
that allows abstract encapsulation of database operations. It aims to make
representing queries in your code as perl-ish as possible while still
providing access to as many of the capabilities of the database as
possible, including retrieving related records from multiple tables in a
single query, 'JOIN', 'LEFT JOIN', 'COUNT', 'DISTINCT', 'GROUP BY', 'ORDER
BY' and 'HAVING' support.
DBIx::Class can handle multi-column primary and foreign keys, complex
queries and database-level paging, and does its best to only query the
database in order to return something you've directly asked for. If a
resultset is used as an iterator it only fetches rows off the statement
handle as requested in order to minimise memory usage. It has
auto-increment support for SQLite, MySQL, PostgreSQL, Oracle, SQL Server
and DB2 and is known to be used in production on at least the first four,
and is fork- and thread-safe out of the box (although your DBD may not be).
This project is still under rapid development, so large new features may be
marked experimental - such APIs are still usable but may have edge bugs.
Failing test cases are always welcome and point releases are put out
rapidly as bugs are found and fixed.
We do our best to maintain full backwards compatibility for published APIs,
since DBIx::Class is used in production in many organisations, and even
backwards incompatible changes to non-published APIs will be fixed if
they're reported and doing so doesn't cost the codebase anything.
The test suite is quite substantial, and several developer releases are
generally made to CPAN before the branch for the next release is merged
back to trunk for a major release.
Artistic-1.0 OR GPL-1.0-or-later