<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Benchmark on Java &amp; Moi</title><link>https://javaetmoi.com/tags/benchmark/</link><description>Recent content in Benchmark on Java &amp; Moi</description><generator>Hugo</generator><language>fr</language><lastBuildDate>Wed, 16 Sep 2015 05:20:37 +0000</lastBuildDate><atom:link href="https://javaetmoi.com/tags/benchmark/feed.xml" rel="self" type="application/rss+xml"/><item><title>Benchmark de frameworks de mapping objet</title><link>https://javaetmoi.com/2015/09/benchmark-frameworks-java-mapping-objet/</link><pubDate>Wed, 16 Sep 2015 05:20:37 +0000</pubDate><guid isPermaLink="false">http://javaetmoi.com/?p=1442</guid><description>&lt;p&gt;&lt;a href="wp-content/uploads/2015/09/logo-java-performance.png"&gt;&lt;figure&gt;
&lt;picture&gt;
&lt;img
loading="lazy"
decoding="async"
alt="logo-java-performance"
class="image_figure image_internal image_unprocessed"
src="https://javaetmoi.com/wp-content/uploads/2015/09/logo-java-performance.png"
/&gt;
&lt;/picture&gt;
&lt;/figure&gt;
&lt;/a&gt; Ce billet a pour origine un commentaire posté dans &lt;a href="http://javaetmoi.com/2015/08/check-list-revue-code-et-architecture-java/"&gt;mon précédent billet&lt;/a&gt; et dans lequel Laurent demandait un &lt;strong&gt;retour d’expérience&lt;/strong&gt; sur l’utilisation de &lt;strong&gt;frameworks Java de mapping objet vers objet&lt;/strong&gt; tels &lt;a href="https://github.com/DozerMapper/dozer"&gt;Dozer&lt;/a&gt; ou &lt;a href="http://modelmapper.org/"&gt;ModelMapper&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Dans l’architecture d’une &lt;strong&gt;applicative n-tiers&lt;/strong&gt;, une couche de mapping objet / objet peut intervenir à plusieurs niveaux :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;En entrée ou en sortie d’un web service SOAP afin de convertir en objet métier les DTO générés à partir du WSDL, ou inversement.&lt;/li&gt;
&lt;li&gt;Entre la couche de présentation et la couche de services métiers lorsque la première expose des DTO et la seconde travaille avec des objets métiers.&lt;/li&gt;
&lt;li&gt;Entre la couche de services métiers et la couche d’accès aux données afin de mapper les entités persistances en objets métiers.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Dans le premier exemple, le développeur n’a guère le choix. Dans les 2 autres, il s’agit d’un choix d’architecture.
L’introduction d’une couche de mapping n’est pas un choix à prendre à la légère : ayant pour objectif de découpler les couches, elle complexifie l’application et peut détériorer ses performances. Le choix d’en introduire une et d’utiliser un framework pour faciliter sa mise en œuvre n’est pas non plus évident.&lt;/p&gt;
&lt;p&gt;Ce billet est découpé en 2 parties :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Une première dressant les &lt;strong&gt;avantages&lt;/strong&gt; et les &lt;strong&gt;inconvénients&lt;/strong&gt; d’utiliser &lt;strong&gt;Dozer&lt;/strong&gt; par rapport à une &lt;strong&gt;approche manuelle&lt;/strong&gt;,&lt;/li&gt;
&lt;li&gt;et une seconde présentant les résultats d’un &lt;strong&gt;micro-benchmark&lt;/strong&gt; comparant plusieurs frameworks : &lt;strong&gt;Dozer&lt;/strong&gt;, &lt;strong&gt;Orika&lt;/strong&gt;, &lt;strong&gt;Selma&lt;/strong&gt;, &lt;strong&gt;MapStruct&lt;/strong&gt; et &lt;strong&gt;ModelMapper&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;figure&gt;
&lt;picture&gt;
&lt;img
loading="lazy"
decoding="async"
alt="logo-java-performance"
class="image_figure image_internal image_unprocessed"
src="https://javaetmoi.com/wp-content/uploads/2015/09/logo-java-performance.png"
/&gt;
&lt;/picture&gt;
&lt;/figure&gt;
&lt;/p&gt;</description></item></channel></rss>