NHibernate - NHibernate

NHibernate
NHibernate-logo.svg
Versão estável
5.3.8 / 5 de abril de 2021 ; 3 meses atrás ( 2021-04-05 )
Repositório Edite isso no Wikidata
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

links externos