A Scala library for boilerplate-free, type-safe data transformations between case classes, Java beans, and other data structures.
Chimney is a Scala library that provides boilerplate-free, type-safe data transformations between different data structures like case classes and Java beans. It automates the mapping process while ensuring compile-time validation, reducing manual coding effort and potential errors in data conversion tasks.
Scala developers working on applications that require frequent data transformations between different representations, such as converting between domain models, DTOs, or integrating with Java-based systems.
Developers choose Chimney for its ability to eliminate repetitive mapping code with automatic derivation, while maintaining strict type safety and offering extensive customization options for complex transformation scenarios.
Scala library for boilerplate-free, type-safe data transformations
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Generates transformation logic automatically based on field names and types, drastically reducing manual mapping code as emphasized in the README.
Ensures compile-time validation to catch errors early, providing robust guarantees that transformations are correct before runtime.
Supports field renaming, value computations, and conditional transformations for complex scenarios, allowing fine-grained control over mapping logic.
Compatible with Scala 2.12, 2.13, and 3.3+ across JVM, Scala.js, and Scala Native, enabling broad usage in diverse Scala environments.
Seamlessly transforms between Scala case classes and Java beans, facilitating interoperability in mixed-codebase projects as highlighted in the features.
Relies heavily on Scala macros for automatic derivation, which can increase compilation times and add complexity to build configurations.
Customizing complex transformations requires deep understanding of Chimney's API, which may be non-trivial and documented across versioned resources.
Primarily designed for Scala data structures, making it less suitable for direct integration with systems using other languages or data formats without additional layers.
Versioned documentation indicates that updates may introduce breaking changes, requiring migration efforts and careful version management.