Skip to content

DML Lib

The DML Lib provides functional constructs for DMLs in Apex.

API version

License

GitHub Repo starsGitHub ReleaseCodecov

Documentation

You can find the full documentation at dml.beyondthecloud.dev.

What Does It Solve?

  • You Have Uncommitted Work Pending - Callouts are not allowed when there is an uncommitted transaction pending.
  • Too Many DML Statements - Too many DML operations issued in a single Apex transaction.
  • Long-Running Unit Tests - Unit tests take a long time to execute due to complex data creation.
  • Code Performance - Inefficient code due to DML operations scattered across the codebase.
  • Lack of Transaction Control - No centralized way to manage and commit database operations.

Why DML Lib?

  • Mock DMLs in Apex Tests - Built-in mocking support lets you test your code without database operations, making tests faster and more isolated.
  • Comprehensive Results - Get detailed operation results including success/failure status, record IDs, and error information for each DML operation.
  • Security Controls - Full support for User/System mode and With/Without Sharing, plus field-level security stripping.
  • Relationship Handling - Automatically resolve parent-child relationships across inserts. No need to manually assign IDs after parent inserts.
  • Immediate Operations - Execute single DML operations immediately and get results without needing to call commitWork().

Quick Start

apex
Account account = new Account(Name = 'Acme Corp');
Contact contact = new Contact(LastName = 'Smith');

new DML()
    .toInsert(account)
    .toInsert(DML.Record(contact).withRelationship(Contact.AccountId, account))
    .commitWork();

// contact.AccountId is automatically set to account.Id

Documentation

Installation