O WBean (Where Bean) é o objeto de filtro da listagem. Ele estende o Bean e implementa a interface Criteria do Jasap — é quem carrega os parâmetros de busca que o DAO usa para montar o WHERE do SQL. Segundo arquivo a ser criado — depende do Bean (extends).
Nota: neste CRUD básico, o where não é usado — a listagem traz todos os registros sem filtro. Quando adicionarmos filtros (abas, busca rápida), aí sim o where entra em ação e veremos em detalhes. Por agora, o WBean existe porque o framework exige um objeto que implemente Criteria.
package br.xt.app.departamento.produto;
import br.jasap.dao.Criteria;
public class DepartamentoProdutoWBean extends DepartamentoProdutoBean implements Criteria {
private String where;
public String getWhere() { return where; }
public void setWhere(String where) { this.where = where; }
}
Uma interface é um contrato — a classe que diz implements Criteria promete ter certos métodos. Se faltar algum, o código não compila.
A interface Criteria do Jasap exige apenas dois métodos:
public interface Criteria {
String getWhere();
void setWhere(String where);
}
O framework usa getWhere() pra ler a cláusula WHERE e injetar no SQL da consulta. Sem implements Criteria, o framework não reconhece o objeto como portador de filtros.
O WBean herda todos os campos e constantes do Bean (NOME_PRODUTO, ID_PRODUTO, TABLE, etc.). Isso é útil porque quando formos adicionar filtros, o daoWhere() vai precisar das constantes de campo pra montar o SQL (ex: SQL.column(DepartamentoProdutoBean.NOME_PRODUTO)).
É também a convenção do projeto: todo WBean estende seu Bean correspondente. O WBean nunca carrega dados de um registro real — é usado exclusivamente como objeto de filtro na listagem.
O Bean e o WBean não declaram construtores — e não precisam. Quando uma classe Java não declara nenhum construtor, o compilador cria automaticamente um construtor vazio nos bastidores. É como se tivesse escrito:
public DepartamentoProdutoWBean() { }
Esse construtor vazio é tudo que o Jasap precisa pra instanciar o WBean via reflection (getInstance()).
Comparando com o DAO (próximo arquivo): o DAO tem dois construtores explícitos — um vazio e um com AppManager. O construtor com AppManager configura a conexão com o banco (setManager + setDataBase). O Bean e o WBean não precisam de conexão com banco — são só objetos de dados — por isso o construtor padrão é suficiente.
O campo where é de infraestrutura — não existe coluna "where" no banco. Serve só pra transportar a string SQL entre o DAO e o framework.
Fluxo (quando for usado):
"qtd_produto > 0"filtro.setWhere("qtd_produto > 0")filtro.getWhere() e injeta no SQL da consultaNeste CRUD básico, o where fica null (sem filtros = traz tudo). Veremos isso em detalhes quando adicionarmos filtros na listagem.
public class DepartamentoProdutoWBean extends DepartamentoProdutoBean implements Criteria| Elemento | O que significa |
|---|---|
public | Visível para o DAO e para a listagem, que instanciam o WBean diretamente |
DepartamentoProdutoWBean | Convenção do projeto: mesmo prefixo do Bean + WBean. O "W" vem de "Where" |
extends DepartamentoProdutoBean | Herda os campos e constantes do Bean (NOME_PRODUTO, ID_PRODUTO, etc.). Convenção do projeto: todo WBean estende seu Bean |
implements Criteria | Contrato do Jasap — a classe promete ter getWhere() e setWhere(). Sem isso, o framework não reconhece o objeto como portador de filtros |
private String whereCampo de infraestrutura que armazena a cláusula WHERE montada pelo DAO. Não é uma coluna do banco — serve apenas para transportar a string SQL entre o DAO e o framework. Neste CRUD básico, fica null (sem filtros).
getWhere() / setWhere()Exigidos pela interface Criteria — sem eles a classe não compila.
| Método | Quem chama | Para quê |
|---|---|---|
getWhere() | Framework Jasap | Lê a cláusula WHERE e injeta no SQL antes de executar a consulta |
setWhere() | DAO (daoWhere()) | Grava o resultado da montagem do WHERE |