DepartamentoProdutoWBean novo arquivo

0:00 / 0:00

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.

CÓDIGO COMPLETO
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; }

}
O que é uma interface?

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.

Por que o WBean estende o Bean?

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.

Por que não tem construtores?

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.

Como o where funciona? (visão geral)

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):

  1. O usuário aplica um filtro (ex: só os produtos com estoque)
  2. O DAO monta a condição SQL: "qtd_produto > 0"
  3. O DAO grava no WBean: filtro.setWhere("qtd_produto > 0")
  4. O framework lê filtro.getWhere() e injeta no SQL da consulta

Neste 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

ElementoO que significa
publicVisível para o DAO e para a listagem, que instanciam o WBean diretamente
DepartamentoProdutoWBeanConvenção do projeto: mesmo prefixo do Bean + WBean. O "W" vem de "Where"
extends DepartamentoProdutoBeanHerda os campos e constantes do Bean (NOME_PRODUTO, ID_PRODUTO, etc.). Convenção do projeto: todo WBean estende seu Bean
implements CriteriaContrato do Jasap — a classe promete ter getWhere() e setWhere(). Sem isso, o framework não reconhece o objeto como portador de filtros

private String where

Campo 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étodoQuem chamaPara quê
getWhere()Framework JasapLê a cláusula WHERE e injeta no SQL antes de executar a consulta
setWhere()DAO (daoWhere())Grava o resultado da montagem do WHERE