IRONSOFTWAREHOME
ATUALIZAÇÕES DO DESENVOLVEDOR

NHibernate em C# (Como funciona para desenvolvedores)

Curtis Chau
Curtis Chau
Updated: 28 de julho de 2025

NHibernate C# (Como Funciona para Desenvolvedores): Figura 1 - Página inicial de NHibernate C#

O NHibernate é uma poderosa estrutura de mapeamento objeto-relacional (ORM) projetada para uso com o .NET Framework. Ele oferece aos desenvolvedores uma maneira eficiente de preencher a lacuna entre o mundo orientado a objetos dos aplicativos .NET e o mundo relacional dos bancos de dados. Ao usar o NHibernate, você pode reduzir significativamente a quantidade de código repetitivo necessário para implementar as camadas de acesso a dados, tornando seus aplicativos .NET mais limpos e fáceis de manter.

O papel do ORM na simplificação das interações com o banco de dados

Frameworks ORM como o NHibernate simplificam as interações com bancos de dados relacionais, permitindo que os desenvolvedores trabalhem com dados em termos de objetos e suas propriedades, em vez de instruções SQL. Essa abstração ajuda os desenvolvedores a se concentrarem mais na lógica de negócios de seus aplicativos e menos nos comandos SQL subjacentes e no esquema do banco de dados. Por exemplo, o NHibernate lida com toda a geração e execução de SQL, permitindo que operações como inserções, exclusões e atualizações sejam realizadas com simples conversão e manipulação de objetos.

Configurando o NHibernate em um projeto .NET

Para começar a usar o NHibernate em seu projeto .NET , o primeiro passo é instalar o pacote NHibernate. Isso pode ser feito facilmente através do Gerenciador de Pacotes NuGet do Visual Studio, usando o seguinte comando:

PM > Install-Package NHibernate

NHibernate C# (Como Funciona para Desenvolvedores): Figura 2 - Abra um console de linha de comando e insira o comando acima para instalar o NHibernate

Configurando o NHibernate com um arquivo de configuração XML

Após a instalação do NHibernate, o próximo passo é configurá-lo. Isso envolve a criação de um arquivo de mapeamento do Hibernate que detalha as configurações do seu servidor de banco de dados e os detalhes do mapeamento de seus objetos para as tabelas do banco de dados. O principal arquivo XML, geralmente chamado de hibernate.cfg.xml, inclui configurações como a string de conexão do banco de dados, dialeto e outras configurações específicas do banco de dados.

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
  <session-factory>
    <property name="connection.provider">
      NHibernate.Connection.DriverConnectionProvider
    </property>
    <property name="connection.driver_class">
      NHibernate.Driver.SqlClientDriver
    </property>
    <property name="connection.connection_string">
      Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;
    </property>
    <property name="dialect">
      NHibernate.Dialect.MsSql2012Dialect
    </property>
    <property name="show_sql">true</property>
    <mapping resource="Employee.hbm.xml"/>
  </session-factory>
</hibernate-configuration>
XML

Entendendo os Componentes Principais do NHibernate

Um dos componentes principais do NHibernate é a Session Factory, que foi projetada utilizando o padrão de projeto Factory. Este componente cria objetos de sessão que gerenciam a conexão com o banco de dados e armazenam as operações transacionais. A criação da Session Factory é dispendiosa, por isso geralmente é feita apenas uma vez durante o ciclo de vida da aplicação, tornando-a um elemento crucial para a otimização do desempenho.

Classes e métodos principais no NHibernate

O NHibernate gira em torno de diversas classes e métodos essenciais. Por exemplo, a interface ISession desempenha um papel fundamental no NHibernate, facilitando a criação de sessões de consulta e manipulação de dados. Métodos como OpenSession ajudam os desenvolvedores a iniciar transações, executar comandos SQL e consultar o banco de dados usando comandos SQL ou o próprio HQL (Hibernate Query Language) do NHibernate.

Mapeamento de entidades para tabelas de banco de dados com NHibernate

O mapeamento de entidades no NHibernate é realizado por meio de arquivos de mapeamento, geralmente escritos em XML. Esses arquivos, geralmente nomeados de acordo com a classe da entidade (por exemplo, Employee.hbm.xml ), definem como as propriedades de uma entidade são mapeadas para as colunas de uma tabela do banco de dados. Um arquivo de mapeamento típico inclui o nome da classe, o nome da tabela e detalhes sobre cada propriedade, incluindo a chave primária, o nome da coluna e o tipo de dados.

Análise detalhada das propriedades e atributos usados ​​em arquivos de mapeamento.

Nesses arquivos de mapeamento, você pode especificar vários atributos para cada propriedade, como restrições de não nulo ou restrições de unicidade. O NHibernate também permite mapeamentos complexos, como relacionamentos um-para-muitos e muitos-para-um, fornecendo um conjunto de ferramentas poderoso para representar estruturas de dados relacionais em uma estrutura orientada a objetos.

Executando comandos SQL e transações no NHibernate

O NHibernate simplifica as operações CRUD (Criar, Ler, Atualizar, Excluir) ao abstrair os comandos SQL subjacentes. Os desenvolvedores podem realizar essas operações sem escrever código SQL explícito, usando em vez disso métodos fornecidos pela interface ISession. Por exemplo, para adicionar uma nova entidade ao banco de dados, basta criar uma nova instância do objeto, definir suas propriedades e usar o método Save do ISession.

Gerenciando Transações com ITransaction

As transações no NHibernate são gerenciadas através da interface ITransaction, que garante a integridade e consistência dos dados. Usando o método BeginTransaction de ISession, os desenvolvedores podem garantir que todas as operações sejam concluídas com sucesso antes de confirmar os dados no banco de dados ou reverter se algo der errado, mantendo assim a estabilidade dos seus dados.

Exemplo de código completo

Este exemplo inclui a configuração dos arquivos de configuração e mapeamento do NHibernate e demonstra como realizar operações de criação, leitura, atualização e exclusão usando o NHibernate.

using NHibernate;
using NHibernate.Cfg;
using System;

// Define the Employee class with virtual properties
public class Employee
{
    public virtual int Id { get; set; }
    public virtual string FirstName { get; set; }
    public virtual string LastName { get; set; }
}

class Program
{
    private static ISessionFactory sessionFactory;

    static void Main()
    {
        // Initialize the SessionFactory using NHibernate configuration
        sessionFactory = new Configuration().Configure().BuildSessionFactory();

        // Perform database operations
        CreateEmployee();
        ReadEmployee(1);
        UpdateEmployee(1, "UpdatedName");
        DeleteEmployee(1);
    }

    static void CreateEmployee()
    {
        using (var session = sessionFactory.OpenSession())
        using (var transaction = session.BeginTransaction())
        {
            var newEmployee = new Employee
            {
                FirstName = "Iron",
                LastName = "Software"
            };
            session.Save(newEmployee); // Save the new Employee object to the database
            transaction.Commit(); // Commit the transaction to finalize the insertion
            Console.WriteLine("Employee created: " + newEmployee.Id);
        }
    }

    static void ReadEmployee(int id)
    {
        using (var session = sessionFactory.OpenSession())
        {
            // Retrieve the Employee object by its Id
            var employee = session.Get<Employee>(id);
            Console.WriteLine("Read Employee: " + employee.FirstName + " " + employee.LastName);
        }
    }

    static void UpdateEmployee(int id, string newFirstName)
    {
        using (var session = sessionFactory.OpenSession())
        using (var transaction = session.BeginTransaction())
        {
            // Get the Employee object by its Id
            var employee = session.Get<Employee>(id);
            employee.FirstName = newFirstName; // Update the employee's first name
            session.Update(employee); // Update the Employee object in the database
            transaction.Commit(); // Commit the transaction to save changes
            Console.WriteLine("Employee updated: " + employee.FirstName);
        }
    }

    static void DeleteEmployee(int id)
    {
        using (var session = sessionFactory.OpenSession())
        using (var transaction = session.BeginTransaction())
        {
            // Retrieve the Employee object to be deleted
            var employee = session.Get<Employee>(id);
            session.Delete(employee); // Delete the Employee from the database
            transaction.Commit(); // Commit the transaction to finalize the deletion
            Console.WriteLine("Employee deleted");
        }
    }
}

Recursos de Portabilidade e Interoperabilidade de Banco de Dados

O NHibernate foi projetado com a portabilidade de banco de dados já garantida. Graças à sua configuração de dialetos, o NHibernate pode se adaptar à maioria dos bancos de dados SQL com alterações mínimas no código-fonte. Isso significa que você pode migrar de um servidor SQL para MySQL ou Oracle sem precisar reescrever sua camada de acesso a dados.

Adaptando o NHibernate para diversos sistemas de banco de dados, como o SQL Server.

Os arquivos de configuração XML no NHibernate permitem que os desenvolvedores especifiquem o dialeto SQL específico para seu sistema de banco de dados. Isso torna o NHibernate uma solução flexível que pode ser facilmente adaptada para funcionar com praticamente qualquer banco de dados relacional que suporte SQL, garantindo que seu aplicativo seja portátil em diferentes sistemas de banco de dados.

Utilizando NHibernate com IronPDF

NHibernate C# (Como Funciona para Desenvolvedores): Figura 3 - Página inicial de IronPDF

A integração do NHibernate com o IronPDF é uma combinação poderosa que pode aprimorar seus aplicativos .NET . Ele permite gerenciar operações de banco de dados com o NHibernate, enquanto utiliza o IronPDF para gerar documentos PDF a partir dos seus dados. Considere um cenário em que seu aplicativo precisa fornecer documentos específicos do usuário, como relatórios de funcionários, que precisam ser gerados e baixados em formato PDF. O NHibernate pode gerenciar com eficiência os processos de recuperação de dados do seu banco de dados, enquanto o IronPDF pode converter esses dados em arquivos PDF bem formatados.

Instale o IronPDF

Primeiro, certifique-se de que o IronPDF foi adicionado ao seu projeto. Você pode incluí-lo através do Gerenciador de Pacotes NuGet instalando o pacote IronPDF .

PM > Install-Package IronPdf

NHibernate C# (Como Funciona para Desenvolvedores): Figura 4 - Instale o IronPDF através do Gerenciador de Pacotes NuGet

Exemplo de código

Vamos analisar mais detalhadamente como implementar isso em sua aplicação. Após configurar o NHibernate e recuperar os dados necessários do banco de dados, como detalhes dos funcionários, você preparará um modelo HTML que representará a aparência que o documento PDF deverá ter. Este modelo HTML pode ser preenchido dinamicamente com dados obtidos do NHibernate. Por exemplo, se você estiver gerando um relatório para um funcionário, o modelo incluirá espaços reservados para o nome, o número de identificação e outros detalhes relevantes do funcionário.

Aqui está um exemplo de código detalhado que demonstra como buscar dados usando NHibernate e convertê-los em um PDF usando IronPDF:

using IronPdf;
using NHibernate;

static void CreateEmployeeReport(int employeeId)
{
    // Open a session to interact with the database
    using (var session = OpenSession())
    {
        // Retrieve the employee object based on the provided ID
        var employee = session.Get<Employee>(employeeId);

        // Create an instance of the ChromePdfRenderer class from IronPDF
        var renderer = new ChromePdfRenderer();

        // Create the HTML content for the PDF, embedding employee data into the HTML
        var htmlTemplate = $@"
            <html>
            <head>
                <title>Employee Report</title>
            </head>
            <body>
                <h1>Employee Details</h1>
                <p>Name: {employee.FirstName} {employee.LastName}</p>
                <p>ID: {employee.Id}</p>
            </body>
            </html>";

        // Render the HTML string as a PDF document
        var pdf = renderer.RenderHtmlAsPdf(htmlTemplate);

        // Save the generated PDF to a file
        pdf.SaveAs("EmployeeReport.pdf");
    }
}

NHibernate C# (Como Funciona para Desenvolvedores): Figura 5 - Exemplo de saída do código acima

Neste código, OpenSession() é um método que inicializa uma sessão NHibernate, que é utilizada para buscar os dados dos funcionários. A classe ChromePdfRenderer do IronPDF então pega o modelo HTML preenchido com os dados buscados e o renderiza como um PDF. Este PDF está salvo localmente, mas também pode ser transmitido diretamente para um usuário através de uma interface web.

Conclusão

Neste tutorial, exploramos como o NHibernate simplifica as operações de banco de dados em aplicações .NET e como sua integração com o IronPDF aprimora a funcionalidade, permitindo a geração de documentos PDF dinâmicos. O NHibernate oferece ferramentas robustas de gerenciamento de dados, enquanto o IronPDF proporciona uma maneira prática de criar PDFs com qualidade profissional a partir de modelos HTML preenchidos com dados.

O IronPDF está disponível para teste gratuito , e as licenças começam em um valor acessível, sendo uma solução ideal para integrar a geração de PDFs de alta qualidade em seus aplicativos. Em conjunto, essas ferramentas oferecem uma solução abrangente para gerenciar dados e produzir documentos, ideal tanto para projetos de grande porte quanto para projetos de menor escala.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais bem estruturados e visualmente atraentes.

...
Leia mais

Artigos relacionados

Key in blue circle

Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.

Your trial license will be sent to your email address

Sem limitações. 100% desbloqueado. Sem cartão de crédito.

bullet_checkedNão é necessário cartão de crédito nem criação de conta.Sem limitações. 100% desbloqueado. Sem cartão de crédito.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Agende sua demonstração ao vivo gratuita.
Booking Badge

Aprovado por milhões de engenheiros em todo o mundo.

Logotipos dos clientes da Iron Software
Agende sua consulta sem compromisso.
Preencha o formulário abaixo ou envie um e-mail para sales@ironsoftware.com
Os seus dados serão sempre mantidos em sigilo.
Aprovado por milhões de engenheiros em todo o mundo.
Logotipos dos clientes da Iron Software
Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.
Não é necessário cartão de crédito nem criação de conta.