May 26, 2018
Extensible and flexible object <-> relational mapper
This is an SQL to OO mapper with an object API inspired by ClassDBI 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.
DBIxClass 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.