> 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/jmapper/info.md).

# JMapper 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*

JMapper object-mapping framework is similar to MapStruct configuration mechanism that should be provided beforehand. Several configuration variants cab be supported:

* XML-based
* annotation-based
* programmatic configuration via Java API

Uses the bytecode generation mechanism based on Javassist library to provide end-to-end 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*

* relational mapping of several classes to one class (many to one) and vice versa (one to many)
* configurations inheritance

## ![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*

* high performance due to bytecode generation mechanism (Javassist library)
* easy-to-use feature mappings

### ![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*

* hard to debug and validate object mappings correctness

## ![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**](https://jmapper-framework.github.io/jmapper-core/)
* [**Official Repository**](https://github.com/jmapper-framework/jmapper-core)
* [**Java Performance Mappings**](https://www.baeldung.com/java-performance-mapping-frameworks)
* [**Java JMapper Guide**](https://www.baeldung.com/jmapper)
* [**Java JMapper Article**](https://www.codeflow.site/ru/article/jmapper)
* [**Java JMapper Alternatives**](https://java.libhunt.com/jmapper-core-alternatives)
