Com relação ao annotation, talvez você tenha razão. Preciso amadurecer mais as idéias sobre o caso.
Já estudei e usei o hibernate há cerca de 6 meses. Achei uma maravilha, a melhor coisa do mundo. Só que a criação de XML começou a ficar um saco. Até “entrar no sangue” os mapeamentos many-to-many e até o one-to-many, criar esses XMLs fica um saco. O mapeamento da herança, na minha opinião, também é um porre!
Não sei se é a opinião da maioria, mas criar/manter esses XMLs de mapeamento, na minha opinião, é muito chato! Gosto de XML para comunicar aplicações heterogêneas, não para mapear e configurar nada. =)
Creio que pelo fato de ter conseguido uma boa abstração nas minhas classes DAO (não é opinião minha, e acredito que posso melhorar muito essa abstração) eu esteja tão receoso quanto a verdadeira utilidade de um framework ORM. Certos pacotes eu aproveito inteiramente em vários projetos. Sem precisar mudar nada. Normalmente só altero a classe responsável pela conexão. Também é possível essa reutilização com os XMLs, mas como disse, acho manter isso um saco. Mas pode ser questão de costume.
Acho a curva de aprendizado para se aprender e “utilizar bem” um framework ORM também uma desvantagem. Vivemos numa época de prazos absurdos (pelo menos eu vivo e creio que a maioria dos desenvolvedores também) e na maioria das vezes não temos tempo para aprender a utilizar bem um framework.
Talvez seja melhor utilizar o tempo disponível para aprendizado aprendendo/aprimorando outros frameworks, como o Spring, e melhorando as nossas metodologias de desenvolvimento, para nos tornarmos o mais eficiente possível. Se aprofundar mais nos padrões de projeto também me parece essencial. Aprender padrões e, principalmente, utiliza-los de forma eficaz, não é algo tão simples, pelo menos para mim!
Abraços!
Celso Martins