Why Query.apex?
Although Salesforce provides Database.query method to dynamically execute a query from a string, it is far from easy to construct such a string in a structural and flexible way. Query.apex is designed to improve the flexibility of the code and consequently enhance the productivity of the development.