Vale a pena passar de um arquivo de mapeamento de hibernação feito à mão para anotações?

StackOverflow https://stackoverflow.com/questions/82223

  •  09-06-2019
  •  | 
  •  

Pergunta

Eu tenho um webapp cuja base de código original foi desenvolvida com um arquivo de mapeamento de hibernação feito à mão.Desde então, tornei-me bastante proficiente em 'codificar' meu arquivo hbm.xml.Mas todas as crianças legais estão usando anotações atualmente.

Então, a questão é: Vale a pena o esforço refatorar meu código para usar anotações de hibernação?Ganharei alguma coisa além de ser descolado e moderno?Perderei algum controle que tenho em meu arquivo de mapeamento codificado manualmente?

Uma subquestão é, quanto esforço será necessário? Gosto de meus bancos de dados simples e mesquinhos.O mapeamento cobre apenas uma dúzia de objetos de domínio, incluindo dois conjuntos, algumas subclasses e cerca de 8 tabelas.

Obrigado, queridos SOpedianos, antecipadamente por suas opiniões informadas.

Foi útil?

Solução

"Se não está quebrado - não corrigi-lo"

Eu sou um antiquado POJO / POCO tipo de cara de qualquer maneira, mas por que a mudança para anotações apenas para ser legal? Para o melhor de meu conhecimento que você pode fazer a maioria das coisas como anotações, mas os mapeamentos mais complexos são por vezes expressa mais claramente como XML.

Outras dicas

Uma coisa que você vai ganhar com o uso de anotações em vez de um arquivo de mapeamento externo é que suas informações de mapeamento será em classes e campos que melhora a capacidade de manutenção. Você adiciona um campo, você imediatamente adicionar a anotação. Você remove um, você também remover a anotação. você renomear uma classe ou um campo, a anotação é logo ali e você pode mudar o nome da tabela ou coluna também. você faz alterações em herança de classe, é levado em conta. Você não tem que ir e editar um arquivo externo, algum tempo depois. isso torna a coisa toda mais eficiente e menos propenso a erros.

Por outro lado, você vai perder a visão global seu arquivo de mapeamento utilizado para lhe dar.

Eu fiz recentemente, tanto em um projeto e encontrado:

  1. Eu prefiro escrever anotações para XML (joga bem com tipagem estática de Java, auto-completar no IDE, refatoração, etc). Eu gosto de ver as coisas todos os tecidos juntos ao invés de ir e voltar entre código e XML.
  2. Codifica db informações em suas classes. Algumas pessoas acham que grosseiro e inaceitável. Eu não posso dizer que me incomodou. Tem que ir a algum lugar e nós estamos indo para reconstruir o WAR para uma mudança independentemente.
  3. Na verdade, percorreu todo o caminho para anotações JPA, mas há definitivamente casos em que as anotações JPA não são suficientes, por isso, então tive que usar qualquer anotações de hibernação ou de configuração para ajustar.
  4. Note que você pode realmente usar ambas as anotações e arquivos HBM. Pode ser um híbrido agradável que especifica a parte S em anotações e R participar de arquivos HBM, mas soa como mais problemas do que vale a pena.

Por mais que eu gostaria de passar para novos e potencialmente melhor coisas que eu preciso lembrar-se de não mexer com coisas que não são quebrados. Então, se ter os mapeamentos de hibernação em um arquivo separado está funcionando para você agora eu não iria mudá-lo.

Eu definitivamente prefiro anotações, tendo utilizado os dois. Eles são muito mais sustentável e uma vez que você não está lidando com que muitas classes para re-map, eu diria que vale a pena. As anotações fazem refatoração muito mais fácil.

Todos os recursos são suportados tanto no XML e anotações. Você ainda será capaz de substituir as anotações com a declaração XML.

Como para o esforço, eu acho que vale a pena, como você vai ser capaz de ver tudo em um lugar e não alternar entre o código eo arquivo xml (a menos de curso que você está usando dois monitores;))

A única coisa que você vai ganhar de usar anotações

Eu provavelmente argumentar que isso é o coisa que você quer ganhar com o uso de anotações. Porque você não obter a segurança tempo de compilação com NHibernate esta é a próxima melhor coisa.

"Se não está quebrado - não corrigi-lo"

@Macka - Obrigado, eu precisava ouvir isso. E obrigado a todos por suas respostas.

Enquanto eu estou em posição muito feliz de ter um insano quantidade de controle profissional e criativo sobre o meu trabalho, e pode trazer em praticamente qualquer tecnologia, biblioteca, ou ferramenta para praticamente qualquer razão (descobrindo coisas caras) incluindo "porque todos os miúdos legal estão usando-o" ... realmente não faz sentido para a porta que equivale a uma parcela significativa do núcleo de um projeto existente.

Vou experimentar anotações do Hibernate ou JPA com um campo verde projetar algum tempo. Infelizmente, eu raramente obter novos projectos completamente independentes.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top