Uma das coisas mais chatas hoje para desenvolver aplicações Java é a necessidade de configuração.
E não me entendam errado, eu acho que a possibilidade de configuração é uma coisa excelente …
Acho que estou batendo demais nesta tecla, mas isto não é culpa apenas da plataforma …
Vejam o seguinte exemplo …
Alguem chega para você e diz que tem uma solução para persistência automática dos objetos, mas a aplicação precisa seguir alguns padrões para isto funcionar …
- Todas as classes persistentes precisam estar no mesmo package, ou estender a classe Y
- Todas as classes que serão persistidas precisam ter exatamente o mesmo nome da tabela correspondente
- Os campos da tabela terão os mesmos nomes dos campos
- Todo e qualquer campo que não for de uma classe wraper, collection ou tipo nativo é um relacionamento entre tabelas, e por padrão é do tipo many-to-one
- Todos os campos do tipo collection precisam ter informações genéricas (<TipoContido>) e serão por padrão mapeados para uma coleção do tipo many-to-many
- Para fazer uma coleção one-to-many inversa, basta o tipo destino da coleção ter uma propriedade do tipo da classe origem, quando ouver mais de uma, uma delas precisa ter a palavra “owner” no nome
- As tabelas que irão mapeas as coleções many-to-many terão o nome “classe_propriedade”
Bom, este é só um exemplo, o padrão adotado poderia ser qualquer um …
Qual seria a sua reação para com este framework de persistência?
…
Bom, eu fiz um teste e apresentei esta solução a algumas pessoas e a reação foi exatamente a mesma em todos os casos …
…
Todos disseram algo semelhante com:
Ahh, mas eu não gosto deste padrão, o framework suporta o padrão de nomes XYZ que eu criei para usarmos na empresa?
…
Eu respondia: não, o padrão precisa ser este, caso contrario precisa-se configurar a classe inteira ou classe por classe.
Ahh, então o framework é ruim, não serve, ainda esta muito no inicio, ….
Por que eu quero um framework para configurar automaticamente se eu vou precisar configurar manualmente?
Agora a mesma situação com o Ruby on Rails por exemplo, a grande maior parte dos desenvolvedores RoR que conheço, simplesmente aceita o padrão de nomenclatura do RoR, pelo menos para aplicações novas (claro que este tipo de solução não se encaixa para problemas legados) …
Ou seja, sera que sou só eu que acho que as coisas deveriam ter uma configuração padrão, e só nos obrigar a configurar quando quisermos fugir deste padrão?
e principalmente, se quisermos alterar apenas um pequeno pedaço da aplicação, por exemplo, apenas uma das entidades quer seguir outro nome, só configurar aquela entidade, e não a aplicação toda por causa disto …
Levando isto ao extremo, coisas como a API de Servlets, deveria permitir que frameworks se auto configurassem …
que deveriamos ser obrigados a fazer menos coisas repetidas, e utilizar menos código repetido, por que por exemplo, o web.xml que utilizo é identico em 90% das aplicações …
e sou obrigado a copiar e colar ele sempre …
e no dia que eu descobrir um bug nele, precisarei alterar todas as minhas aplicações …
qual é o problema com facilitar a vida do usuário/desenvolvedor?
Ai alguem vai dizer, mas as ferramentas deveriam fazer isto para você …
Bom, ai temos alguns outros argumentos …
EJBs estão esperando uma ferramenta para facilitar o trabalho desde a versão 1.0
JSF ainda esta esperando uma ferramenta a altura do Visual Studio (este é o caso que chegou mais proximo de conseguir algo na minha opinião, o que estragou foi a mania que temos de “quero fazer do meu jeito”, inclusive foi esta mania que fez eu não gostar da primeira versão do Java Studio Creator, o meu argumento era que a aplicação ficava muito engessada, o que não era realmente tão verdade assim, ele só não deixava eu trabalhar da forma como eu queria, eu não aceitei os padrões dele)
SWING ainda esta esperando uma ferramenta …
E por que as coisas não poderiam simplesmente ser amigáveis ao desenvolvedor, e permitir a utilização de ferramentas também?
(Alguem lembra do Delphi? É perfeitamente possível e fácil criar formulários 100% via código na mão, e mesmo assim tem um editor de formulários espetacular … )
e por ultimo …
Estas ferramentas não são criadas simplesmente por que não é possível, ou por que não aceitamos elas por estarmos mal acostumados?
Sera que nenhuma empresa investe em criar estas ferramentas por que desenvolvedores java estão tão acostumados a passar trabalho que gostam disto? mesmo que em algum nível inconsciente?
PS.: acho que escrevi praticamente a mesma coisa ja, só não lembro se foi aqui no blog ou em algum forum por ai 
Se você gostou deste post, lembre-se de assinar o RSS feed do blog, para ser notificado de novos posts!