NHibernate - NHibernate
Versão estável | 5.3.8 / 5 de abril de 2021
|
---|---|
Repositório | |
Escrito em | C # |
Sistema operacional | Plataforma cruzada |
Plataforma | .NET 4.6.1, .NET Standard 2.0, .NET Core 2.0 e Mono |
Modelo | Mapeamento objeto-relacional |
Licença | GNU Lesser General Public License 2.1 |
Local na rede Internet | http://nhibernate.info |
NHibernate é uma solução de mapeamento objeto-relacional (ORM) para a plataforma Microsoft .NET . Ele fornece uma estrutura para mapear um modelo de domínio orientado a objetos para um banco de dados relacional tradicional . Seu objetivo é aliviar o desenvolvedor de uma parte significativa das tarefas de programação relacionadas à persistência de dados relacionais. NHibernate é um software gratuito e de código aberto distribuído sob a GNU Lesser General Public License . NHibernate é um porto de Hibernate .
Resumo de recursos
O principal recurso do NHibernate é o mapeamento de classes .NET para tabelas de banco de dados (e de tipos de dados CLR para tipos de dados SQL ). O NHibernate também fornece recursos de consulta e recuperação de dados. O NHibernate gera os comandos SQL e libera o desenvolvedor do manuseio manual do conjunto de dados e da conversão de objetos, mantendo o aplicativo portátil para a maioria dos bancos de dados SQL, com portabilidade do banco de dados entregue com muito pouca sobrecarga de desempenho.
NHibernate fornece persistência transparente para Plain Old CLR Objects (POCOs). O único requisito estrito para uma classe persistente é um construtor sem argumento, que não precisa ser público. (O comportamento adequado em alguns aplicativos também requer atenção especial aos métodos Equals () e GetHashCode ().)
História
NHibernate foi fundado por Tom Barrett, e mais tarde adquirido por Mike Doerfler e Peter Smulovics. No final de 2005, a JBoss , Inc. (agora parte da Red Hat ) contratou Sergey Koshcheyev, o então desenvolvedor líder do NHibernate, para trabalhar em tempo integral em suas versões futuras. No final de 2006, a JBoss interrompeu o apoio a este projeto; agora é inteiramente desenvolvido e liderado pela comunidade.
A versão 1.0 espelha o conjunto de recursos do Hibernate 2.1, bem como vários recursos do Hibernate 3.
NHibernate 1.2.1, lançado em novembro de 2007, introduziu muitos outros recursos do Hibernate 3 e suporte para .NET 2.0, procedimentos armazenados , genéricos e tipos anuláveis.
NHibernate 2.0
O NHibernate 2.0 foi lançado em 23 de agosto de 2008. É comparável ao Hibernate 3.2 em termos de recursos. Com o lançamento da versão 2.0, o NHibernate abandonou o suporte para .NET 1.1.
O NHibernate 2.1 foi lançado em 17 de julho de 2009.
NHibernate 3.0
NHibernate 3.0 foi lançado em 4 de dezembro de 2010 e é a primeira versão a usar .NET 3.5, com recursos como:
- Suporte LINQ integrado
- API fortemente tipada como critérios chamada QueryOver
- Novo analisador baseado em AST para mecanismo HQL
- Suporte para colunas de carregamento lento.
NHibernate 3.2
O NHibernate 3.2 foi lançado em abril de 2011. Alguns dos novos recursos foram:
- Mapeamento por código: configuração fluente, arquivos .hbm.xml não são mais necessários;
- Subselecionar: capacidade de mapear visualizações SQL como entidades;
- Paginação HQL: TAKE e SKIP em HQL;
- Provedor de bytecode integrado: menos uma DLL para implantar.
NHibernate 4.0
O NHibernate 4.0 foi lançado em 17 de agosto de 2014. Esta versão requer .NET Framework 4.0 ou posterior.
NHibernate 5.0
NHibernate 5.0 foi lançado em 10 de outubro de 2017. Ele fornece suporte para programação assíncrona. Esta versão requer .NET Framework 4.6.1 ou posterior.
NHibernate 5.1
O NHibernate 5.1 foi lançado em 17 de março de 2018. Ele oferece suporte ao .NET Standard 2.0 e ao .NET Core 2.0.
NHibernate 5.2
O NHibernate 5.2 foi lançado em 4 de dezembro de 2018.
NHibernate 5.3
O NHibernate 5.3 foi lançado em 19 de julho de 2020.
Contribuições
Como software de código aberto , o NHibernate recebeu muitas contribuições de seus usuários. A implementação do LINQ permitiu o uso da Consulta Integrada à Linguagem com o NHibernate.
NHibernate Profiler
O NHibernate Profiler é uma ferramenta Object – Relational Mapping (ORM) que serve como um depurador visual em tempo real para o NHibernate. Ele identifica consultas de dados SQL ineficientes para eliminar o trabalho desnecessário do banco de dados para aumentar o desempenho geral do aplicativo. O NHibernate Profiler também alerta os usuários sobre consultas de dados que custam muito tempo e os direciona para a linha exata no código C # .
Amostra
Aqui está um trecho de código para adicionar um objeto ao banco de dados e mostra como recuperar, modificar e atualizar um objeto no banco de dados usando o NHibernate.
//Add a Customer to the datastore
//'sessionFactory' is a thread-safe object built once per application lifetime (can take seconds to build)
//based on configuration files which control how database tables are mapped to C# objects
//(e.g. which property maps to which column in a database table)
//
//'session' is not thread safe and fast to obtain and can be thought of as a connection to the database
using (var session = sessionFactory.OpenSession())
{
//transaction represents a db transaction
using (ITransaction transaction = session.BeginTransaction())
{
//The line below adds the customer to NHibernate's list of objects to insert to the database
//but it doesn't execute SQL insert command at this stage*.
//*if the Id field is generated by the database (e.g. an auto-incremented number)
//then NHibernate will execute SQL INSERT when .Save is called
session.Save(new Customer { Id = Guid.NewGuid(), FirstName = "Boss", Age = 50 });
//The call below will execute the SQL INSERT and commit the transaction
transaction.Commit();
}
}
//Retrieve the Customer from the database, modify the record and update the database
using (var session = sessionFactory.OpenSession())
{
using (ITransaction transaction = session.BeginTransaction())
{
// session's Query returns IQueryable<Customer>.
// Only when .FirstOrDefault is called will NHibernate execute the SQL query
Customer customer = session.Query<Customer>().Where(c => c.Token == token).FirstOrDefault();
// Now the customer is 'part of' the 'session' object and NHibernate keeps track of changes
// made to it
if (customer != null)
{
// Changing a property of an object does NOT cause SQL to be executed
customer.TokenVerified = true;
// Committing the transaction results in an SQL UPDATE statement
// NHibernate kept track of the fact that 'customer' has been changed since loading
transaction.Commit();
}
}
}
A configuração do NHibernate pode afetar quando o NHibernate executa instruções SQL.
Veja também
Referências
Bibliografia
- Dentler, Jason (4 de outubro de 2010). NHibernate 3.0 Cookbook (1ª ed.). Publicação de pacote . ISBN 1-84951-304-X.
- Cure, Aaron (5 de maio de 2010). NHibernate 2 Beginner's Guide (1ª ed.). Publicação de pacote . ISBN 1-84719-890-2.
- Kuaté, Pierre Henri; Harris, Tobin; Bauer, cristão; King, Gavin (fevereiro de 2009). NHibernate em ação . Manning Publications . ISBN 1-932394-92-3.
- Perkins, Benjamin (setembro de 2011). Working with NHibernate 3.0 (1ª ed.). Wrox . ISBN 1-11811-257-1.