Um caso de uso bastante comum em sistemas que utilizam JSF é a criação de formulários de consulta utilizando vários critérios diferentes (com muitos deles opcionais). Partindo dos dados dos formulários costuma-se criar código inundado de condições (IFs) e com checagem de nulos (!= null) para compor Strings que resultam em consultas JPA. QueryDSL é uma ferramenta útil e produtiva para garantir a geração de Queries JPA 100% type-safe sem a concatenação dessas Strings e com outras facilidades como o auto-complete em IDEs. Nesta palestra demonstraremos como fazer o uso intensivo de tipos customizados, Converters, Null Objects e QueryDSL para produzir uma arquitetura enxuta, produtiva e type-safe no desenvolvimento deste caso de uso partindo do Modelo (JPA + QueryDSL) à visão (JSF).
Código disponível em https://github.com/yanaga/jsf-querydsl-jpa