2800 get/set na mesma classe?

29 respostas
jjose

Tenho que carregar um tabela com 2800 campo :shock:

Se para cada variavel eu tenho um get e um set e para cada um dos dois 3 linhas, teria 16.800

Como vou fazer isso?

29 Respostas

marciosantri

Queria conhecer o cara que arquitetou esta tabela… Que estrutura mais estranha… hehehe. Bom, deve ter tido seus motivos.

Eu faria o seguinte:
Criaria um array com 2800 campos e trabalharia com indexadores para a busca de valores. Mas depende da sua aplicação. Administrar 2800 campos é meio complicado…

Do jeito que estou te falando, fica mais ou menos assim:

Object[] valores = new Object[2800];

String[] nomes = new String[2800];

public void preencherNomes(){
...
}

public void setObject(String campo, Object valor){
  int i = localizarCampo(campo);
  valores[i] = valor;
}

public Object getObject(String campo){
  int i = localizarCampo(campo);
  return valores[i];
}

public String getString(String campo){
  return (String)getObject(campo);
}

public int localizarCampo(String campo){
...
}

Bom, espero ter ajudado em alguma coisa.

R

é a famosa TB_XACOMIGO

R

pode usar um Map tb…

fsquadro

Caramba.

2800 campos? Nunca vi nada parecido em uma única tabela.

C

2800 campos ? :shock:
Eclipse-&gt Source-&gt Generate Getters and Setters.
:smiley:

Bom, tem aquele problema do compilador gerar um class mto grande.

Tente agrupar esses campos em classes menores e criar um relacionamento melhor entre essas classes. (mais OO).

Por último, tem a alternativa de criar uma famosa struct (classe com todos os atributos publicos e tchau gets e sets). De qualquer forma uma classe com todos esses atributos e 1 get e 1 set para cada atributo não vai diferir mto de um struct.

mister_m

Redesenhando a tabela.

peczenyj

E vc realmente vai setar ou ler cada um desses campos ?

IMHO vc deve implementar get/set apenas no que vc tiver que acessar.

bielmenezes

O cara que projetou essa tabela merece um prêmio!!

peczenyj

campo_0001
campo_0002

campo_2800

:shock:

louds

Você realmente precisa ler todos esses campos? Isso tem cara de tabelas desnormalizadas para OLAP.

Luca

Olá

A coisa não é tão feia assim.

  1. Se você só precisa carregar a tabela, significa que não precisa dos setter

  2. Se você usar JDBC ou SQL na raça, a sugestão do Sandri funciona direitinho com poucas linhas de código.

  3. Indique este DBA para os projetos em haja a necessidade de um time sheet generator/incrementator tabajara.

[]s
Luca

marcushlm

throws ExcessiveFieldsException :lol:

Guilherme_Silveira

Crie views diferentes para partes diferentes da tabela.
Ai utilize essas views para criar seu modelo.

Dessa maneira seu sistema legado continua funcionando… e o novo tambem.

Claro que a melhor alternativa para manter todo mundo com saude é normalizar um pouquinho essa tabela…

Fabio_Kung

(curiosíssimo para saber o motivo das 2800 colunas)

Paulo_Silveira

poderia ser pior: uma servlet de 30 000 linhas… sim, existem.

marcushlm

também! hehehehe

R

Já tive que dar manutenção numa jsp de 1500 linhas, sendo a maioria era uma mistura de javascript com scriptlets :twisted:

maciel.bombonato

Rafaelprp, já tive que dar manutenção em uma classe que gerava PDF usando iText que inicialmente tinha 11k e a cara de linhas… e já me pediram alterações em JSP’s onde se eu seguisse a especificação técnica ao pé da letra eu teria um carinha de mais de 3000 linhas em JSTL.

PS: Fiz um modelo pro cara pra mostrar que isso era cretinamente ridiculo com 2200 linhas na base do copia/cola e o web container abriu o bico na hora de fazer o parse. Resumindo… mudaram o esquema. hehehe

Quanto ao esquema de trabalhar com essa tabela, sou a favor (caso seja possível de se utilizar no escopo do sistema) o lance do map.

[]'s

mister_m

Guilherme Silveira:
Crie views diferentes para partes diferentes da tabela.
Ai utilize essas views para criar seu modelo.

Se não for possível alterar a tabela e se a performance da view for satisfatória, siga essa abordagem. Caso contrário, crie um modelo normalizado sincronizado por triggers com o modelo legado.

1112

Manda uma história pro http://worsethanfailure.com

fsquadro

Fábio,

Tenho que admitir que tentei imaginar, mas não consegui chegar a algo que podesse gerar uma tabela com 2800 colunas.

Também estou curiosíssimo!

Ironlynx

curiosíssimo para saber o motivo das 2800 colunas)
Cara, eu tb queria saber que diabos de tanta info é essa.
Imagina uma tabela usuário assim:
Nome,sobrenome… metragem da pele(M),numero de glóbulos brancos… :lol:
Eu não consigo imaginar… :-o

:shock:
Eu cobraria por linha… :lol:

fmeyer

eu aposto uma perna que isso eh um mailing malfeito se for bancario eu ate ja sei quem e.

um banco ( instituicao financeira ) exportava o mailing pra telemarketing ativo contendo todas as informacoes pessoais do titular, conjuge e dependentes, sendo q cada dependente tinha todas as informacoes que teria um titular.
e a tabela suportava 2 conjuges :mrgreen:

mas se isso nao for isso colega,

http://www.agiledata.org/essays/databaseRefactoring.html

perca alguns fins de semana.

T

Tabelas com 2800 colunas costumam ser assim porque algum carinha pensou assim:

  • “Pô, como é que ponho um Vector em uma linha da tabela”?
  • “Não faça isso, mermão, crie uma nova tabela e efetue um relacionamento entre elas”
  • “É muito difícil, cara, e sei que o tal Vector pode conter no máximo 200 elementos”.
  • “Não ouviu o que eu lhe falei? Crie uma nova tabela, e faça um JOIN entre elas”
  • “É difícil, dá pra dar um jeito”?

E o cara realmente deu o tal jeito, e como ele sabia que cada elemento do vetor podia ter apenas 1 caracter, e como ele sabia que no banco de dados dele uma linha podia ter no máximo 8 K, ele criou 2800 colunas (em vez das 200 que ele disse que precisaria), já que é o máximo que o tal banco suportava.

marciosantri

Quando eu estava começando a programar fazia coisas assim no DBase, hehehe.

Tipo:

Produto
Nome
Saidas_Jan_2007
Saidas_Fev_2007

Saidas_Jan_2010
etc

Hehehe. De vez em quando eu vejo uns exemplos de quando eu estava começando a programar (lá em meados de 1994) e dá pra dar umas boas risadas. Pena que a maioria dessas coisas se perderam nos disquetes ilegíveis.

wmitsuda

O cara que projetou essa tabela merece algo que as regras de uso do fórum não me permitem dizer :twisted:

cv1

Ueh, aqui no forum a gente nao tem problemas com a expressao “enforcado com o proprio intestino grosso”. :mrgreen:

roadhouse

Paulo Silveira:
jjose:

Se para cada variavel eu tenho um get e um set e para cada um dos dois 3 linhas, teria 16.800

poderia ser pior: uma servlet de 30 000 linhas… sim, existem.

Sim… eu sei que existem…

esses servlets são totalmente mvc, dentro dele vc gerá o html faz a regra de negócio e faz chamada o JDBC (Hiobernate pra que ne?)

andredeividi

Imagina depois de 3 meses vc ter voltar esse codigo para dar manutenção
Repensar é melhor saida.

abraço

Criado 20 de junho de 2007
Ultima resposta 21 de jun. de 2007
Respostas 29
Participantes 23