| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/07/2009 12:46:06
|
fabiofalci
GUJ Master
![[Avatar]](/images/avatar/c359889a833e7612e0cff1dc69d272bc.png)
Membro desde: 11/04/2006 09:23:14
Mensagens: 1057
Localização: Porto Alegre - RS
Offline
|
Já precisei criar um código pra aplicar plural, num gerador de código.
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/07/2009 15:27:42
|
Yky Mattshawn
Virtual Machine Man
Membro desde: 18/12/2006 03:34:14
Mensagens: 651
Localização: São Sebastião do Caí / RS
Offline
|
Bruno Laturner wrote:
arthurminarini wrote:conheço um programador que gosta de nomes bem intuitivos. É SERIO MESMO NÃO É ZUAÇÃO
Corrigido:
Na verdade, o erro apenas piorou. 'há' um tempo 'atrás' é pleonasmo.
O correto seria:
Ou
|
Yky Mattshawn [ Compusoft - Desenvolvimento de Sistemas Empresariais ]
"Tudo que é ortodoxo ou heterodoxo demais gera heresia."
Bixo 2010 - Ciência da Computação - Feevale/RS e Unisinos/RS |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/07/2009 15:35:34
|
Yky Mattshawn
Virtual Machine Man
Membro desde: 18/12/2006 03:34:14
Mensagens: 651
Localização: São Sebastião do Caí / RS
Offline
|
luistiagos wrote:quem não lembra da velha gambi para fazer muitas vezes sqls dinamicos?
Não consideraria isso uma gambiarra. É apenas um meio de tornar um código menos condicional. Agrega-se a isso o fato de '1 = 1' ser uma expressão que os SGDB's normalmente já são capazes de desconsiderar e, ainda que 'resolvam' a condição, o envolvimento na operação seja totalmente ignorável.
No caso de um SQL dinâmico (independente à existência de Hibernate ou de quaisquer frameworks e afins), como seria o correto*?
*sendo, para fins de explicação, 'correto' o antônimo de 'gambiarra'
|
Yky Mattshawn [ Compusoft - Desenvolvimento de Sistemas Empresariais ]
"Tudo que é ortodoxo ou heterodoxo demais gera heresia."
Bixo 2010 - Ciência da Computação - Feevale/RS e Unisinos/RS |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/07/2009 15:45:12
|
luistiagos
GUJ Expert
![[Avatar]](/images/avatar/98785ca89cfbbe933921bfe68a94553b.jpg)
Membro desde: 10/07/2006 10:37:23
Mensagens: 3161
Offline
|
Yky Mattshawn wrote:
luistiagos wrote:quem não lembra da velha gambi para fazer muitas vezes sqls dinamicos?
Não consideraria isso uma gambiarra. É apenas um meio de tornar um código menos condicional. Agrega-se a isso o fato de '1 = 1' ser uma expressão que os SGDB's normalmente já são capazes de desconsiderar e, ainda que 'resolvam' a condição, o envolvimento na operação seja totalmente ignorável.
No caso de um SQL dinâmico (independente à existência de Hibernate ou de quaisquer frameworks e afins), como seria o correto*?
*sendo, para fins de explicação, 'correto' o antônimo de 'gambiarra'
É estranho... pq 1 sera sempre = 1...
|
SCJP 1.5
SCJA 1.0
IBM DB2 Associate |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/07/2009 15:57:53
|
Yky Mattshawn
Virtual Machine Man
Membro desde: 18/12/2006 03:34:14
Mensagens: 651
Localização: São Sebastião do Caí / RS
Offline
|
luistiagos wrote:
É estranho... pq 1 sera sempre = 1...
Mas tu mesmo disseste:
A questão não é o resultado de 1 = 1, mas por que ele está sendo utilizado.
Sempre vi esse tipo de SQL em códigos que geravam instruções SQL dinâmicas. Suponha que tu tenhas um SELECT básico com vários filtros OPCIONAIS.
SELECT tabela.ID FROM tabela
Filtros: CampoA e CampoB. Um ou outro dos campos pode ser filtrado, mas nenhum é obrigatório, bem como não são dependentes entre si. Sem o uso do 1 = 1, preciso condicionar bem mais o código, ficando assim em exemplo (em JS pra simplificar):
Perceba, acima, que é necessário que os códigos subsequentes 'conheçam' a existência do WHERE na instrução.
Mas veja como ficaria simples se eu usasse o 1 = 1:
Concluindo: a expressão 1 = 1 existe só e somente só nestas especificidades de alguma necessidade de otimização (lê-se isso como 'subtração') de linhas de código.
This message was edited 2 times. Last update was at 30/11/2009 17:22:06
|
Yky Mattshawn [ Compusoft - Desenvolvimento de Sistemas Empresariais ]
"Tudo que é ortodoxo ou heterodoxo demais gera heresia."
Bixo 2010 - Ciência da Computação - Feevale/RS e Unisinos/RS |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/07/2009 16:10:11
|
Bruno Laturner
GUJ Expert
![[Avatar]](/images/avatar/5800ccd9514fd789d08e5831951aa6bc.jpg)
Membro desde: 18/02/2008 16:17:53
Mensagens: 3002
Offline
|
luistiagos wrote:
Yky Mattshawn wrote:
luistiagos wrote:quem não lembra da velha gambi para fazer muitas vezes sqls dinamicos?
Não consideraria isso uma gambiarra. É apenas um meio de tornar um código menos condicional. Agrega-se a isso o fato de '1 = 1' ser uma expressão que os SGDB's normalmente já são capazes de desconsiderar e, ainda que 'resolvam' a condição, o envolvimento na operação seja totalmente ignorável.
No caso de um SQL dinâmico (independente à existência de Hibernate ou de quaisquer frameworks e afins), como seria o correto*?
*sendo, para fins de explicação, 'correto' o antônimo de 'gambiarra'
É estranho... pq 1 sera sempre = 1...
Lógica booleana no SQL é estranha mesmo.
Um AND x = 1 AND x = 2 vai trazer valores onde x é 1 ou 2.
|
A resposta acima foi achada em menos de 5 minutos no google.
The prisoner falls in love with his chains. --E.W. Dijkstra |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/07/2009 16:22:56
|
Yky Mattshawn
Virtual Machine Man
Membro desde: 18/12/2006 03:34:14
Mensagens: 651
Localização: São Sebastião do Caí / RS
Offline
|
Bruno Laturner wrote:
luistiagos wrote:
Yky Mattshawn wrote:
luistiagos wrote:quem não lembra da velha gambi para fazer muitas vezes sqls dinamicos?
Não consideraria isso uma gambiarra. É apenas um meio de tornar um código menos condicional. Agrega-se a isso o fato de '1 = 1' ser uma expressão que os SGDB's normalmente já são capazes de desconsiderar e, ainda que 'resolvam' a condição, o envolvimento na operação seja totalmente ignorável.
No caso de um SQL dinâmico (independente à existência de Hibernate ou de quaisquer frameworks e afins), como seria o correto*?
*sendo, para fins de explicação, 'correto' o antônimo de 'gambiarra'
É estranho... pq 1 sera sempre = 1...
Lógica booleana no SQL é estranha mesmo.
Um AND x = 1 AND x = 2 vai trazer valores onde x é 1 ou 2.
Mas qual o torpe SGDB que tens usado?
Ao menos no MySQL isso não funciona assim não...
Aliás, se testares alguma instrução do tipo que citaste com o 'EXPLAIN' no início, o MySQL será enfático ao declarar:
Impossible WHERE
P.S.: não considero a lógica booleana no SQL muito diferente da existente nas linguagens de programação. O SQL, às vezes, pode exigir mais atenção quanto à procedência de parêntesis, uma vez que toda a lógica se faz numa única linha (saldo SPs e FNCs), mas nada que torne essa lógica estranha.
This message was edited 2 times. Last update was at 13/07/2009 16:26:10
|
Yky Mattshawn [ Compusoft - Desenvolvimento de Sistemas Empresariais ]
"Tudo que é ortodoxo ou heterodoxo demais gera heresia."
Bixo 2010 - Ciência da Computação - Feevale/RS e Unisinos/RS |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/07/2009 17:41:53
|
Bruno Laturner
GUJ Expert
![[Avatar]](/images/avatar/5800ccd9514fd789d08e5831951aa6bc.jpg)
Membro desde: 18/02/2008 16:17:53
Mensagens: 3002
Offline
|
Estranho, fiz no Oracle, tentei com uma consulta simples e realmente não deu certo.
Falei o que disse acima baseado numa consulta meio complicada. Agora tenho que achar ela de novo pra confirmar.
|
A resposta acima foi achada em menos de 5 minutos no google.
The prisoner falls in love with his chains. --E.W. Dijkstra |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/07/2009 06:37:40
|
clone_zealot
JavaEvangelist
Membro desde: 21/11/2004 16:40:00
Mensagens: 424
Offline
|
Yky Mattshawn wrote:
Concluindo: a expressão 1 = 1 existe só e somente só nestas especificidades de alguma necessidade de otimização (lê-se isso como 'subtração') de linhas de código.
Ou, só existe qndo não se usa um Hibernate Criteria(ou qq outro tipo de abstração do SQL) =)
|
"Não amo a espada por sua agudez,
não amo a flecha por sua rapidez,
não amo o homem por sua glória,
amo sim, tudo o que eles defendem"
Faramir, Príncipe de Ithilien |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/07/2009 08:40:23
|
Yky Mattshawn
Virtual Machine Man
Membro desde: 18/12/2006 03:34:14
Mensagens: 651
Localização: São Sebastião do Caí / RS
Offline
|
clone_zealot wrote:
Yky Mattshawn wrote:
Concluindo: a expressão 1 = 1 existe só e somente só nestas especificidades de alguma necessidade de otimização (lê-se isso como 'subtração') de linhas de código.
Ou, só existe qndo não se usa um Hibernate Criteria(ou qq outro tipo de abstração do SQL) =)
Somente na abstração da suposta comodidade de uma API gigante...
Veja o que podemos encontrar nos códigos do Hibernate:
Pelo visto, tem mais gente que usa esse 'auxílio'... até o pessoal abstrato, digo, o pessoal responsável pela abstração do Hibernate...
OBS: aquela comentário 'yuck' está mesmo no source do Hibernate.
|
Yky Mattshawn [ Compusoft - Desenvolvimento de Sistemas Empresariais ]
"Tudo que é ortodoxo ou heterodoxo demais gera heresia."
Bixo 2010 - Ciência da Computação - Feevale/RS e Unisinos/RS |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/07/2009 08:40:49
|
luistiagos
GUJ Expert
![[Avatar]](/images/avatar/98785ca89cfbbe933921bfe68a94553b.jpg)
Membro desde: 10/07/2006 10:37:23
Mensagens: 3161
Offline
|
clone_zealot wrote:
Yky Mattshawn wrote:
Concluindo: a expressão 1 = 1 existe só e somente só nestas especificidades de alguma necessidade de otimização (lê-se isso como 'subtração') de linhas de código.
Ou, só existe qndo não se usa um Hibernate Criteria(ou qq outro tipo de abstração do SQL) =)
Não existe não... vc não ve... ou vc sabe exatamente a query que o Criteria gera por traz?
ja vi o hql gerando muita query bizzara... por isto não gosto muito do hql e nem Criteria...
depende muito do que vai fazer... se for algo simples dai blza... mas se for algo complexo ele pode gerar uma bizzarisse com a query do sql nativo...
|
SCJP 1.5
SCJA 1.0
IBM DB2 Associate |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 04/08/2009 08:34:02
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20581
Localização: Curitiba/PR
Offline
|
Lembrei de mais um clássico. Davamos manutenção num sistema feito em C, e descobrimos que algumas variáveis de controle, imprescindíveis para o funcionamento do sistema, eram globais.
Isso por sí só já mereceria um lugar nessa lista... porém, uma delas tem destaque de honra:
A variável se chamava i.
Exatamente. Qualquer código que fizesse um "for (i = 0; i < x; i++)" estaria corrompendo um valor de controle importante, e global...
Obviamente, alguns programadores (que vieram depois do inteligente que declarou esse global), tentavam fazer declarações de i em escopos locais, recebiam um warning (de variável eclipsada) e então removiam a declaração...
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/08/2009 16:58:41
|
danieldestro
Moderador
![[Avatar]](/images/avatar/a5bfc9e07964f8dddeb95fc584cd965d.png)
Membro desde: 04/09/2002 17:26:16
Mensagens: 6667
Localização: São Paulo / Catanduva
Offline
|
Vamos salvá-lo da manutenção tenebrosa:
Ainda daria pra melhorar, mas já ajudou bastante.
|
gotjava?
Doe sangue
What You See Is What You Get!
Apostilas de Java grátis!
RefsCALL - Bandeira Eletrônica para Árbitro de Futebol |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/08/2009 17:10:34
|
Feijão
Thread.start()
![[Avatar]](/images/avatar/a24bec8f118f294b46c98659a72fe06e.jpg)
Membro desde: 20/10/2006 17:48:20
Mensagens: 27
Localização: São Paulo
Offline
|
Eu faria assim ainda:
This message was edited 1 time. Last update was at 06/08/2009 17:11:04
|
Todo castigo pra corno é pouco. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/08/2009 11:22:09
|
danieldestro
Moderador
![[Avatar]](/images/avatar/a5bfc9e07964f8dddeb95fc584cd965d.png)
Membro desde: 04/09/2002 17:26:16
Mensagens: 6667
Localização: São Paulo / Catanduva
Offline
|
Vou salvar a alma do incauto: Nota do usuário: o método "addActionError" tem uma sobrecarga que recebe um ValidacaoException e já faz o trabalho repetitivo.
This message was edited 1 time. Last update was at 07/08/2009 11:23:58
|
gotjava?
Doe sangue
What You See Is What You Get!
Apostilas de Java grátis!
RefsCALL - Bandeira Eletrônica para Árbitro de Futebol |
|
|
 |
|
|