I have been moving around with this question and the bird eye difference between Hibernate SessionFactory and JPA EntityManagerFactory is that JPA is standard. You can use it without being afraid of underlying ORM. yet it calls the underlying sessionFactory under the hood.(Correct me if i am wrong)
But if someone knows that he has just to stick with hibernate as a ORM in the future, then what should he choose from these two Factories and why?
Secondly, what are the other differences between these two with respect to performance, features, stability etc?
You should prefer the standard JPA API over the proprietary Hibernate one, for several reasons:
Anyway, most of the effort is in mapping the entities themselves, and that is done using standard JPA annotations, even when using the Session API.