| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/05/2006 15:34:01
|
urubatan
Moderador
![[Avatar]](/images/avatar/fe9fc289c3ff0af142b6d3bead98a923.jpg)
Membro desde: 21/09/2002 10:31:26
Mensagens: 2481
Localização: Porto Alegre/RS
Offline
|
O que vocês acham que pode ser considerado uso excessivo de annotations?
Por exemplo desenvolver uma aplicação web sem tocat em XML apenas com:
@Bean para registrar beans no container IoC
@UrlMapping para dizer qual bean é responsavel por processar uma URL
@Entity para dizer que o bean é persistente (aqui ainda precisa configurar cada um no hibernate.cfg.xml)
@Transactional para dizer que o metodo em questão precisa de uma transação
Outras anotações do Hibernate para configurar os objetos persistentes
Com isto da pra fazer uma aplicação sem tocar em XML com exceção do hibernate.cfg.xml.
vocês acham que isto é uso excessivo de annotations? sera que estou resolvendo um problema e criando outro?
|
[]'s
Rodrigo Urubatan
http://www.urubatan.com.br
Melhor livro de RoR do brasil: http://livro.urubatan.com.br
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/05/2006 17:15:23
|
Mauricio Linhares
Moderador
![[Avatar]](/images/avatar/97af07a14cacba681feacf3012730892.jpg)
Membro desde: 09/01/2005 23:28:22
Mensagens: 3717
Localização: João Pessoa, Paraíba - Brasil
Offline
|
E anotações não são simplesmente pra retirar essas informações dos XMLs e colocar nas classes?
|
Meu blog sobre desenvolvimento | My Last.fm | @mauriciojr
Screencast de Introdução a linguagem Objective-C |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/05/2006 18:32:02
|
carneiro
JavaEvangelist
![[Avatar]](/images/avatar/18b91b19f6a289e7708da7f778b2c609.jpg)
Membro desde: 07/04/2005 11:37:42
Mensagens: 328
Offline
|
E anotações não são simplesmente pra retirar essas informações dos XMLs e colocar nas classes?
Sim, mas há certas vantagens. A anotação conta com informações adicionais, vindas daquilo que é anotado, como o tipo retornado por um método, por exemplo.
|
Davi Luan Carneiro
Desenvolvedor JEE |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/05/2006 18:34:00
|
Mauricio Linhares
Moderador
![[Avatar]](/images/avatar/97af07a14cacba681feacf3012730892.jpg)
Membro desde: 09/01/2005 23:28:22
Mensagens: 3717
Localização: João Pessoa, Paraíba - Brasil
Offline
|
carneiro wrote:E anotações não são simplesmente pra retirar essas informações dos XMLs e colocar nas classes?
Sim, mas há certas vantagens. A anotação conta com informações adicionais, vindas daquilo que é anotado, como o tipo retornado por um método, por exemplo.
Nada diferente do que pode ser feito com XML. No XML do Hibernate você não precisa dizer qual o tipo de uma coluna, pelo tipo da propriedade no objeto ele sabe disso automaticamente. E o meu Eclipse não auto-completa anotações, isso é normal?
|
Meu blog sobre desenvolvimento | My Last.fm | @mauriciojr
Screencast de Introdução a linguagem Objective-C |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/05/2006 19:01:40
|
pcalcado
Moderador
![[Avatar]](/images/avatar/110eec23201d80e40d0c4a48954e2ff5.jpg)
Membro desde: 08/03/2004 17:19:35
Mensagens: 5174
Localização: Sydney - Australia
Offline
|
Annotations para marcar comportamento são sadias (transacional, requer privilégio X, persistível...) metadados com configuração (nome de tabela, usuário, datasource, senha...) são totalmente questionáveis IMHO.
|
Phillip Calçado "Shoes"
http://fragmental.tw/
http://blog.fragmental.com.br/
"It is unfortunate that much of what is called 'object-oriented programming today is simply old style programming with fancier constructs." - Alan Kay |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/05/2006 19:04:19
|
Mauricio Linhares
Moderador
![[Avatar]](/images/avatar/97af07a14cacba681feacf3012730892.jpg)
Membro desde: 09/01/2005 23:28:22
Mensagens: 3717
Localização: João Pessoa, Paraíba - Brasil
Offline
|
pcalcado wrote:Annotations para marcar comportamento são sadias (transacional, requer privilégio X, persistível...) metadados com configuração (nome de tabela, usuário, datasource, senha...) são totalmente questionáveis IMHO.
Mas você não acha que dizer se um campo é "persistível" ou não e onde persistir ele não seria também uma funcionalidade da anotação?
Já que ela carrega informações sobre o código, eu acho que o nome da coluna lá no banco também seria parte do "código" dela. Ou não?
|
Meu blog sobre desenvolvimento | My Last.fm | @mauriciojr
Screencast de Introdução a linguagem Objective-C |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/05/2006 19:10:10
|
carneiro
JavaEvangelist
![[Avatar]](/images/avatar/18b91b19f6a289e7708da7f778b2c609.jpg)
Membro desde: 07/04/2005 11:37:42
Mensagens: 328
Offline
|
O que eu acho que não rola é as named querys ficarem em anotações... Se for assim, prefiro colocá-las diretamente nos métodos.
Acho que vou colocar em properties...
|
Davi Luan Carneiro
Desenvolvedor JEE |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/05/2006 19:10:37
|
pcalcado
Moderador
![[Avatar]](/images/avatar/110eec23201d80e40d0c4a48954e2ff5.jpg)
Membro desde: 08/03/2004 17:19:35
Mensagens: 5174
Localização: Sydney - Australia
Offline
|
Acho que é o mesmo caso quando temos um "C:\Programa\dados" hardcoded no seu sistema. Lembro de um projeto que para rodar no Windows eu tive que criar diretórios c:\home, c:\opt, c:\usr ...
Eu acho que especificamente para esquema de dados o código deve ficar o mais longe possível deste, e para isso temos mapeadores como hibernate. Vincular o código de negócios com um esquema relacional qualquer é ptrender seu código a este esquema e agora que nós conseguimos nos livrar deste acoplamento voltar a tê-lo só para evitar um arquivo XML não me parece muito legal.
|
Phillip Calçado "Shoes"
http://fragmental.tw/
http://blog.fragmental.com.br/
"It is unfortunate that much of what is called 'object-oriented programming today is simply old style programming with fancier constructs." - Alan Kay |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/05/2006 19:15:03
|
carneiro
JavaEvangelist
![[Avatar]](/images/avatar/18b91b19f6a289e7708da7f778b2c609.jpg)
Membro desde: 07/04/2005 11:37:42
Mensagens: 328
Offline
|
Então você prefere os hbm.xml às anotações?
|
Davi Luan Carneiro
Desenvolvedor JEE |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/05/2006 19:25:06
|
pcalcado
Moderador
![[Avatar]](/images/avatar/110eec23201d80e40d0c4a48954e2ff5.jpg)
Membro desde: 08/03/2004 17:19:35
Mensagens: 5174
Localização: Sydney - Australia
Offline
|
Como falei, no caso de mapeamento O-R existem duas coisas distintas que são feitas pelo, por exemplo, Hibernate.
Uma é descrever a estrutura de uma classe em como vai ser persistida. Esta informação de Many-2-Many, Primary Key, etc. pode ficar no código (ainda que eu prefira um jeito mais leve de descrição não específico para Banco de Dados, a gente falou sobre isso aqui faz algum tempo).
Outra é configuração. Em que tabela, qual a URL do SGBD, qual a senha, otimizações, banco de dados utilizado, etc. Este deve ficar à parte do código do sistema.
O primeiro descreve objetos, normal que fique nos objetos. O segundo descreve configuração de uso de banco de dados, este tipo de configuração é dinâmico e não faz parte do código do negócio, além de ser uma informação pertencente à Camada de Persistência, não de Negócios.
Um DataMapper oferece um ponto único desta informação. Apenas um lugar no seu código, seja um DataMapper JDBC manual ou o framework configurado desta forma, deve contêr informação sobre como transformar classes em tabelas e isto nãod eve ficar misturado com regras de negócio.
|
Phillip Calçado "Shoes"
http://fragmental.tw/
http://blog.fragmental.com.br/
"It is unfortunate that much of what is called 'object-oriented programming today is simply old style programming with fancier constructs." - Alan Kay |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/05/2006 19:26:49
|
Mauricio Linhares
Moderador
![[Avatar]](/images/avatar/97af07a14cacba681feacf3012730892.jpg)
Membro desde: 09/01/2005 23:28:22
Mensagens: 3717
Localização: João Pessoa, Paraíba - Brasil
Offline
|
Aí então o cara vai ficar com os dois? XMLs e anotações?
Eu prefiro ficar só com XML no caso do Hibernate
|
Meu blog sobre desenvolvimento | My Last.fm | @mauriciojr
Screencast de Introdução a linguagem Objective-C |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/05/2006 20:40:30
|
peczenyj
Moderador
![[Avatar]](/images/avatar/299dc35e747eb77177d9cea10a802da2.jpg)
Membro desde: 26/03/2006 23:25:37
Mensagens: 3191
Localização: Rio de Janeiro
Offline
|
Lembro de um projeto que para rodar no Windows eu tive que criar diretórios c:\home, c:\opt, c:\usr ...
E eu q tive problemas com uma aplicação que tinha um proxy hard coded...
|
http://pacman.blog.br
'Não importa quanto alguém se dedique à tarefa. Ninguém consegue fazer a água da cascata cair para cima.' |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/05/2006 20:47:13
|
urubatan
Moderador
![[Avatar]](/images/avatar/fe9fc289c3ff0af142b6d3bead98a923.jpg)
Membro desde: 21/09/2002 10:31:26
Mensagens: 2481
Localização: Porto Alegre/RS
Offline
|
pcalcado wrote:Annotations para marcar comportamento são sadias (transacional, requer privilégio X, persistível...) metadados com configuração (nome de tabela, usuário, datasource, senha...) são totalmente questionáveis IMHO.
concordo com você, datasource, usuário, senha, ... não devem estar atrelados ao código fonte
só não acho que a tabela em que um objeto ai ser persistido, o nome do campo correspondente a uma coluna, qual é a PK da tabela, ... devam entrar no mesmo saco, ou seja, devam ser considerados o mesmo tipo de informações.
ainda mais que estas informações não são do tipo que muda durante o deploy de um sistema, assim como qual a URL de um controller/action/coloque aqui como o seu framework chama.
Ela é sempre a mesma dentro do contexto da aplicação.
então, este tipo de informação acho que não tem problema ser configurado com anotações, ja o qe pode ser alterado, ai sim vai pra um XML, properties, ...
não sei se estou separando os tipos de informação de forma errada, mas até o momento estou achando bastante confortavel de trabalhar assim
|
[]'s
Rodrigo Urubatan
http://www.urubatan.com.br
Melhor livro de RoR do brasil: http://livro.urubatan.com.br
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/05/2006 00:08:25
|
Fabricio Cozer Martins
GUJ Ranger
![[Avatar]](/images/avatar/2ecd2bd94734e5dd392d8678bc64cdab.jpg)
Membro desde: 08/05/2004 10:22:03
Mensagens: 935
Localização: Salvador/Brasil
Offline
|
Maurício Linhares wrote:Aí então o cara vai ficar com os dois? XMLs e anotações?
Eu não vejo problemas em usar os dois, nessa separação de configurações que o Phillip falou fica interessante, pois você não tem aqueles xmls 'pesadões', e também permite o cara alterar algumas informações em run-time, através de xmls.
|
Fabrício Cozer Martins
Analista de Sistemas
Bacharel em Ciência da Computação da UFBa
Sun Certified Programmer for Java 2 Platform 1.4
Sun Certified Web Component Developer for J2EE 1.4 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/05/2006 10:49:28
|
Filipe Sabella
GUJ Expert
Membro desde: 12/03/2003 11:25:57
Mensagens: 4680
Offline
|
Síntese com destaque:
O problema é o excesso de configuração necessária, não onde a configuração mora.
SENDO ASSIM, prefiro deixar o código Java o mais livre de lixo possível, como o Shoes colocou.
|
Former LIPE. |
|
|
 |
|
|