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?
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?
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.
é a famosa TB_XACOMIGO
pode usar um Map tb…
Caramba.
2800 campos? Nunca vi nada parecido em uma única tabela.
2800 campos ? :shock:
Eclipse-> Source-> Generate Getters and Setters.

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.
Redesenhando a tabela.
E vc realmente vai setar ou ler cada um desses campos ?
IMHO vc deve implementar get/set apenas no que vc tiver que acessar.
O cara que projetou essa tabela merece um prêmio!!
campo_0001
campo_0002
…
campo_2800
:shock:
Você realmente precisa ler todos esses campos? Isso tem cara de tabelas desnormalizadas para OLAP.
Olá
A coisa não é tão feia assim.
Se você só precisa carregar a tabela, significa que não precisa dos setter
Se você usar JDBC ou SQL na raça, a sugestão do Sandri funciona direitinho com poucas linhas de código.
Indique este DBA para os projetos em haja a necessidade de um time sheet generator/incrementator tabajara.
[]s
Luca
throws ExcessiveFieldsException :lol:
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…
(curiosíssimo para saber o motivo das 2800 colunas)
poderia ser pior: uma servlet de 30 000 linhas… sim, existem.
também! hehehehe
Já tive que dar manutenção numa jsp de 1500 linhas, sendo a maioria era uma mistura de javascript com scriptlets :twisted:
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
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.
Manda uma história pro http://worsethanfailure.com
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!
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:
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.
Tabelas com 2800 colunas costumam ser assim porque algum carinha pensou assim:
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.
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.
O cara que projetou essa tabela merece algo que as regras de uso do fórum não me permitem dizer :twisted:
Ueh, aqui no forum a gente nao tem problemas com a expressao “enforcado com o proprio intestino grosso”. :mrgreen:
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?)
Imagina depois de 3 meses vc ter voltar esse codigo para dar manutenção
Repensar é melhor saida.
abraço