Query object is fundamentally a wrapper around our SQL/HQL query. Also it has various methods to sustitute values inside the actual query we've written.
Check the methods which are available in the query object. It's not just
session.createQuery("SQL_QUERY").list() you can do.
There are lot of
jdbc specific functions available.
List on the other hand just fires the query and gives you a collection object.