title: What's the difference between JPA and Hibernate?
body: <p>I understand that JPA 2 is a specification and Hibernate is a tool for ORM. Also, I understand that Hibernate has more features than JPA 2. But from a practical point of view, what really is the difference? </p>
  
  <p>I have experience using iBatis and now I'm trying to learn either Hibernate or JPA2. I picked up Pro JPA2 book and it keeps referring to "JPA provider". For example:</p>
  
  <blockquote>
    <p>If you think a feature should be standardized, you should speak up
    and request it from your JPA provider</p>
  </blockquote>
  
  <p>This confuses me so I have a few questions:</p>
  
  <ul>
  <li>Using JPA2 alone can I fetch data from DB by simply annotating my POJO's</li>
  <li>Is JPA2 supposed to be used with a "JPA Provider" e.g TopLink or Hibernate? If so, then what's the benefit of using JPA2 + Hibernate as compared to JPA2 alone, or compared to Hibernate alone ?</li>
  <li>Can you recommend a good practical JPA2 book. "Pro JPA2" seems more like a bible and reference on JPA2 (It doesn't get into Queries until the later half of the book). Is there a book that takes a problem/solution approach to JPA2?</li>
  </ul>