title: convertValue issue with Jackson - alternative?
body: <p>I'm trying to get my head around the <code>convertValue</code> method of <em>Jackson</em>. Initially I thought it would be somewhat equivalent to the <code>Gson#fromJson</code> method but this doesn't seem to be the case.</p>
  
  <p>Here's the problem:</p>
  
  <pre><code>// Map&lt;String, Object&gt; map = ...
  ObjectMapper mapper = new ObjectMapper();
  MyPojo pojo = mapper.convertValue(map.get(key), MyPojo.class);
  for (Map.Entry&lt;String, Object&gt; m : map.entrySet()) {
      System.out.println("k=" + m.getKey() + "    v=" + m.getValue());
  }
  pojo.name = "Banana";
  for (Map.Entry&lt;String, Object&gt; m : map.entrySet()) {
      System.out.println("k=" + m.getKey() + "    v=" + m.getValue());
  }
  </code></pre>
  
  <p><strong>Output</strong></p>
  
  <pre><code>k=66e8c013   v=MyPojo{name='Apple'} 
  k=66e8c013   v=MyPojo{name='Banana'}
  </code></pre>
  
  <p><em>Note: Code and output has been stripped down to the relevant part</em></p>
  
  <p>So, if I modify my <em>pojo</em> object, it's also getting changed in the original <code>Map</code>. For me it seems like Jackson doesn't call "new MyPojo()" internally and set the values for each found variable afterwards.</p>
  
  <p>What can I do to prevent this? Is there an alternative method? Do I need to create a copy constructor in order to get a truly new object without references to the values in the Map?<br>
  Additionally it would be cool if someone could tell me what <code>convertValue</code> actually does.</p>