org.qi4j.api.query

## Interface QueryBuilder<T>

-     public interface QueryBuilder<T>

  QueryBuilders are used to create `Query` instances. Iteratively add where() clauses to the query, and then use `UnitOfWork.newQuery(QueryBuilder)` to instantiate the Query. QueryBuilders are immutable, so when adding new where-clauses you get new instances. This DDD tip: Query objects are not executed immediately, so they should be constructed in the domain model and handed over to the UI, which can then further constrain it before actual execution.

- - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `Query<T>` | `newQuery(Iterable<T> iterable)` Create a new query with the declared where-clauses that will be evaluated against the iterable entries.
    `QueryBuilder<T>` | `where(Specification<Composite> specification)` Add a where-clause to the Query.

- - ### Method Detail

    - #### where

          QueryBuilder<T> where(Specification<Composite> specification)

      Add a where-clause to the Query. Use `QueryExpressions` to create the expression.
      Parameters:
        `specification` - the where clause
      Returns:
        a new builder with the added where-clause

    - #### newQuery

          Query<T> newQuery(Iterable<T> iterable)

      Create a new query with the declared where-clauses that will be evaluated against the iterable entries.
      Parameters:
        `iterable` - collection of objects (composites?)
      Returns:
        a new Query instance