In practice, there's no difference.
In theory, JavaBeans follow the JavaBean conventions. POJOs have no such requirement.
However, since you mentioned Spring POJOs (no such thing, by the way: POJOs are by definition not related to any specific API or framework), Spring makes use of the JavaBean conventions for accessor methods in the IOC container). So spring-managed POJOs should follow the JavaBean convention in order to be properly configurable via Spring.
As i know Hibernate Persists both Java Beans/POJO.
While Java Beans have few Restrictions:
1) NO Argument Constructor
2) Must Implements java.io.Serilizable Interface
3) It should not extend any special Base Class
4) It should contain the getter and Setter Methods for instance variables with Naming Convention.
However these rules doesn't affect Hibernate Persistnce Ability to Java Beans.
While Hibernate Persists those POJO Which must have a default Constructor.
Hibernate does not require the POJOs or JavaBeans to implement any special interface or extend any special
sub-class. This is one of the features that distinguish Hibernate from some of the other persistent frameworks.
In fact, Hibernate does not even require persistent classes to implement Serializable as the JavaBean spec
Persistent classes do not need to import or use any Hibernate packages.