> For the complete documentation index, see [llms.txt](https://alexander-rogalsky.gitbook.io/object-mappers-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://alexander-rogalsky.gitbook.io/object-mappers-docs/modules/selma/info.md).

# Selma Tutorial

## ![image info](https://2253721247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MN-Mk4OMwmmbOMJa9JS%2Fuploads%2Fgit-blob-75c36ca21977a39ec156e2fd48b1f548a884d41e%2Ficons8-code-64.png?alt=media) *Description*

The main idea is to prohibit magic conversion and just automate all mappings without any side effects. When mapping appears to be too complex, the developer should handle it by himself using custom mappings/interceptors. The footprint of Selma should be as small as possible as we only depend on a JavaWriter and the JDK. Selma tries to only use static compiled generated code without any reflection at runtime or pseudo-code written in string fields. You can use composition to build a chain of mappers and inside a single mapper you can have global configuration that can be overwritten on a per method basis. Annotation-based approach (APT) is used to generate end-to-end object mappings.

## ![image info](https://2253721247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MN-Mk4OMwmmbOMJa9JS%2Fuploads%2Fgit-blob-a0994bcfb3a7b71ff67a84aa3640ca5f78d90c84%2Ficons8-attach-64.png?alt=media) *Features*

## ![image info](https://2253721247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MN-Mk4OMwmmbOMJa9JS%2Fuploads%2Fgit-blob-4ed9f52d5ebe2dc58fe32d791ec564b3c13cd10e%2Ficons8-edit-property-64.png?alt=media)*Pros & Cons*

### ![image info](https://2253721247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MN-Mk4OMwmmbOMJa9JS%2Fuploads%2Fgit-blob-12af9e13b9af93bf6e34ac672aa5e21cea299227%2Ficons8-add-property-64.png?alt=media) *Pros*

* object mappings generated at compile time
* user-friendly approach backed by annotations simplifies the notation of object property mappings
* mappers compositions with configurations provide possibility to reuse already defined object matchings (new method does not have to be provided for each mapping)

### ![image info](https://2253721247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MN-Mk4OMwmmbOMJa9JS%2Fuploads%2Fgit-blob-22350a29bb796d244a393627a10bf8e746546cb7%2Ficons8-remove-property-64.png?alt=media) \_Cons

## ![image info](https://2253721247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MN-Mk4OMwmmbOMJa9JS%2Fuploads%2Fgit-blob-8b63536610432d3df79534955d64748ed7184f95%2Ficons8-source-64.png?alt=media) *Use cases*

## ![image info](https://2253721247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MN-Mk4OMwmmbOMJa9JS%2Fuploads%2Fgit-blob-b7fff22a5f9ca9c6eb4c54dc1209a9589ba85ef6%2Ficons8-inspect-code-64.png?alt=media) *Links*

* [**Official Site**](http://www.selma-java.org/)
* [**Official Repository**](https://github.com/xebia-france/selma)
* [**Java Selma Alternatives**](https://java.libhunt.com/selma-alternatives)
