São desnormalizada Atualizações possível com NHibernate sem usar um procedimento armazenado?

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

Pergunta

Eu estou ponderando a utilização do NHibernate em um projeto que tem um banco de dados com algum grau de desnormalização planejado (planejado pelos DBAs). Leitura de um conjunto de tabelas e mapear uma coluna para uma propriedade não é um problema. No entanto, quando a atualização eu tenho para mapear uma propriedade de volta para a coluna original na tabela original e atualizar algumas cópias dessa coluna nas tabelas desnormalizados. É possível fazer isso com NHibernate sem o uso de procedimentos armazenados?

EDIT: Embora eu tendo a concordar com a resposta de NXC, esta questão é sobre como resolver o problema com NHibernate em oposição a resolvê-lo no banco de dados.

Foi útil?

Solução

Sim, você pode registrar um ouvinte de evento herdando de DefaultSaveOrUpdateEventListener, substituir OnSaveOrUpdate e atualizar as outras entidades.

Aqui estão alguns posts sobre ouvintes de eventos:

Outras dicas

Algumas reflexões sobre os dados de-normalizados:

  • Use com moderação; uso excessivo de dados Desnormaliza é conhecido por ser uma fonte de manutenção e qualidade de dados problemas para baixo da pista. Um projeto J2EE eu estava envolvido no tiveram apenas 4 itens de dados Desnormaliza em 560 mesas -. Dois desses itens foram mesas de busca

  • Baseando-se em uma aplicação para manter os dados de-normalizados em sincronia é um anti-padrão conhecido. A forma geralmente aceite para manter os dados de-normalizados em um sistema transacional é usar gatilhos de banco de dados. Usando gatilhos significa que uma atualização de qualquer fonte (e não apenas a sua candidatura) será propagada pelo próprio banco de dados. Você seria melhor fora de usar gatilhos para manter os dados Desnormaliza a menos que impede algo específicas de TI.

  • armadilhas folhas de dados Desnormaliza elefante para desenvolvedores de manutenção (especialmente se você não usar gatilhos DB para manter os dados). Certifique-se de todos e cada pedaço de dados Desnormaliza está documentado.

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