moi

Orange / IT&Labs

développeur Java / architecte logiciel

administrateur système Unix / Linux

Orika is a Java Bean mapping framework that recursively copies (among other capabilities) data from one object to another. It can be very useful when developing multi-layered applications.
orika website

pourquoi faire du mapping ?

isolation entre couches applicatives

  • cache la réprésentation interne d'une couche
  • permet d'offrir plusieurs représentations externes
  • par exemple :
    • un modèle de persistence (Bean JPA)
    • un modèle de Bean pour une API REST en v1 (binding JAX-RS)
    • un modèle de Bean pour une API REST en v2 (binding Jackson)
    • un modèle de Bean pour une API SOAP en v1 (binding CXF)
  • limiter les contraintes d'un framework à une couche (annotations, serialisation)
  • permet de faire évoluer plus facilement les contrats d'interfaces

fonctionnalités

  • map des objets complexes récursivement
  • construction dynamique de mapper avec une API Fluent Java
  • applatit ou agrandi des structures en mappant des propriétés imbriqués au niveau supérieur et vice-versa
  • supporte les proxies et objets enrichis (Hibernate, cglib)
  • supporte les convertisseurs spécifiques pour un contrôle total
  • supporte les mappings inverses
  • mapping bidirectionnel en une seule configuration
  • utilise la génération de bytecode pour créer des mappers très rapides

autres outils de mapping

mise en oeuvre

déclaration de dépendence

<dependency>
  <groupId>ma.glasnost.orika</groupId>
  <artifactId>orika-core</artifactId>
  <version>1.4.5</version>
</dependency>
compile 'ma.glasnost.orika:orika-core:1.4.5'

peu de dépendences transitives :

  • javassist : générateur de bytecode
  • slf4j : framework de traces
  • ParaNamer : outil d'extraction des noms de paramètres des méthodes

mise en oeuvre

Démo !

points d'attention

  • utilise les noms des attributs et méthodes => attention au refactoring
  • ne pas oublier de tester les mappings

liens

questions ?