title: What is the best way to rehydrate aggregate roots and their associated entities in an event sourced environment
body: <p>I have seen information on rehydrating aggregate roots in SO, but I am posting this question because I did not find any information in SO about doing so with in the context of an event sourced framework.</p>
  
  <p>Has a best practice been discovered or developed for how to rehydrate aggregate roots when operating on the command side of an application using the event sourcing and CQRS pattern</p>
  
  <p>OR is this still more of a “preference“ among architects?</p>
  
  <p>I have read through a number of blogs and watched a number of conference presentations on you tube  and I seem to get different guidance depending on who I am attending to.</p>
  
  <p>On the one hand, I have found information stating fairly clearly that developers should create aggregates to hydrate themselves using “apply“ methods on events obtained directly from the event store..  </p>
  
  <p>On the other hand, I have also seen in several places where presenters and bloggers have recommended rehydrating aggregate roots by submitting a query to the read side of the application. Some have suggested creating specific validation “buckets“ / projections on the read side to facilitate this.</p>
  
  <p>Can anyone help point me in the right direction on discovering if there is a single best practice or if the answer primarily depends upon performance issues or some other issue I am not thinking about?</p>