Anterior
Próximo
Criando a base de dados a partir do mapeamento com Nhibernate Schema Export publicado em 05/05/2010
É comum vermos desenvolvedores gerando automaticamente as classes e mapeamentos do Nhibernate
a partir de uma base de dados existente, mas poucas vezes vemos o processo inverso.
Caso você seja um adepto do DDD, deve saber que apesar de comum e
funcional, não é saudável construir as classes da aplicação baseadas apenas na base de dados.
Não é saudável, pois deste modo acabamos caindo em um cenário onde toda tabela vira uma classe deixando de aplicar
muitos conceitos de Orientação a Objetos como, por exemplo, a Herança.
O ídeal é pensar apenas no domínio da aplicação na hora de modelar e criar as classes.
Com as classes criadas e os mapeamentos definidos, podemos gerar a base de dados a partir disso com o SchemaExport.
A Classe SchemaExport está contida na Dll do Nhibernate dentro do Namespace NHibernate.Tool.hbm2ddl e sua utilização é extremamente simples.
// cria uma nova cfg do nhibernate
var cfg = new Configuration();
cfg.Configure();
// Executando o schema export
var schemaExport = new SchemaExport(cfg);
schemaExport.Execute(true, true, false);
Como um exemplo vale mais do que mil palavras, aqui você pode baixar o projeto onde modelei as classes e implementei o SchemaExport do Nhibernate para gerar a base de dados.
Tags:
-
5/7/2010 16:02 - Anderson Wernek
Fala Diogo. Gostei da sua disponibilidade em contribuir para o conhecimento de todos.
Mas gostaria de saber de você, como seria a configuração do banco SQL Server? Sabe, como fica na hora de criar a base. No caso seria no xml...
Abraços e suscesso!
-
5/7/2010 16:09 - Diogo Menezes
Anderson, obrigado.
Sua dúvida é referente a configuração do NH para SqlServer ?
Se for:
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
<property name="dialect">NHibernate.Dialect.MsSql2000Dialect</property>
<property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
<property name="connection.connection_string">Server=localhost;Database=base;User ID=usuario;Password=senha;</property>
<property name="connection.isolation">ReadCommitted</property>
<property name="proxyfactory.factory_class">NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle</property>
<mapping assembly="NomeDoAssembly"/>
</session-factory>
</hibernate-configuration>
-
12/2/2011 16:55 - Thiago Araujo
Diogo, estou com um problema...
Utilizando o seu projeto, adicionei uma nova entidade chamada Endereco, fiz no mesmo namespace e criei o hbm.xml da entidade. O problema é que na hora de gerar o script esta nossa entidade nao é gerada... na var var cfg somente indentifica como entidade mapeada Pessoa e Telefone... Tenho que fazer alguma configuração para ela reconhecer minha nova entidade?
-
4/4/2011 9:05 - Thiago
Bom dia! muito bom seu post,mas so fiquei com uma duvida, na hora que vc usa o schemaExport.Execute(true, true, false);
o que ele passa com esses parametros ? e ha alguma maneira dele gerar um script em txt ?