title: DAO & BO (data access layer) - architecture
body: <p>I'm a little bit confused about an example found on the web - <a href="http://www.mkyong.com/spring/maven-spring-hibernate-mysql-example/">spring &amp; hibernate</a> (point <code>4. Model &amp; BO &amp; DAO</code>). There are Model, DAO and BO classes (+ DAO and BO interfaces). What I do not clearly understand is why DAO and BO are separated into different classes if they share exactly the same functionalities (only difference is that BO has a DAO setter).</p>
  
  <p>The author explains only, that the pattern:</p>
  
  <blockquote>
    <p>is useful to identify the layer clearly to avoid mess up the project structure</p>
  </blockquote>
  
  <p>but it seems over-engineered to me (at least in this case). I know this example is very simple, but what this class separation could be useful for? Could someone provide an example?</p>