Esse assunto é polêmico, cada um tem uma idéia a respeito.
Já trabalhei em um projeto que utilizava xml e outro annotations, o que pude perceber foi o seguinte:
a) Com xml as classes de entidade ficam bem limpas e alterações no mapeamento não requer compilação porem é muito chato construir estes docs (xmls).
b) Com annotations algumas classes ficaram extremamente poluidas, muitas delas com código hql misturado; por outro lado éra mais fácil obter a idéia que o código da classe transmitia pelo fato do mapeamento e a estrutura da classe estarem em um mesmo fonte. E diferente do xml, quando tinha que alterar alguma coisa no mapeamento tinha que recompilar.
Ao meu ver estas idéias funcionam muito bem, principalmente a annotations se o seu banco de dados for preparado para trabalhar dessa maneira; se o seu mapeamento tiver que se submeter a uma estrutura (principalmente legada) toda diferente ou que siga a risca as regras de normalização vc vai encontrar vários PRÓS e CONTRAS.
Isso tudo só vai tomar um caminho mais sano quando estivermos trabalhando com banco de dados OO, tudo o que existe hoje em relação à isso na minha opinião é, vamos dizer assim, GAMBIARRA; alguns bem feito poderosos e flexiveis mas ainda assim gambi.
flws