title: What is the best way to reliable store a complex Java object hierarcy?
body: <p>I'm currently developing a software where the user can define a complex hierarchy of objects as settings. 
  Also this settings objects will provide interfaces as an API for other developers.
  Now I want to store these setting and reload it. </p>
  
  <p>I'm  currently considering different ways to do exactly that, but none of my solutions are "good" in my opinion.</p>
  
  <p><strong>The main goals should be:</strong></p>
  
  <ol>
  <li>It should <strong>output a String</strong>, because i prefer a human readable configuration over a fast one. </li>
  <li>It should be <strong>reliable</strong> even when the the <strong>code is changing</strong>. This means not it should do magic, but it should be obvious that an change could break already stored configuration. (Eg. How do I prevent that my colleague renaming a class and breaking production. )</li>
  <li>Storing and loading should work with o<strong>bject, interfaces and generics</strong>.</li>
  <li>Keep configuration of what is stored how as low as possible. I would prefer <strong>convention over configuration</strong>.</li>
  </ol>
  
  <p>I know many of you faced the same or a similar issue while developing. </p>
  
  <p><strong>So what was your solution? Which framework did you use and why?</strong></p>
  
  <p>All solutions I came up with are either not reliant, a huge configuration or to much code.</p>
  
  <p>So I'm looking forward to get some good new perspectives on this topic from all of you.</p>
  
  <p>Thanks.</p>