JPA i Hibernacja - kryteria kontra JPQL lub HQL

Jakie są zalety i wady korzystania z Criteria lub HQL ? Criteria API to przyjemny obiektowo sposób wyrażania zapytań w Hibernacji, ale czasami zapytania Criteria są trudniejsze do zrozumienia / zbudowania niż HQL. Kiedy korzystasz z kryteriów, a kiedy HQL? Co wolisz w jakich przypadkach użycia?...