using IronPdf;
// Disable local disk access or cross-origin requests
Installation.EnableWebSecurity = true;
// Instantiate Renderer
var renderer = new ChromePdfRenderer();
// Create a PDF from a HTML string using C#
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
// Export to a file or Stream
pdf.SaveAs("output.pdf");
// Advanced Example with HTML Assets
// Load external html assets: Images, CSS and JavaScript.
// An optional BasePath 'C:\site\assets\' is set as the file location to load assets from
var myAdvancedPdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", @"C:\site\assets\");
myAdvancedPdf.SaveAs("html-with-assets.pdf");
NHibernate C# (Comment ça marche pour les développeurs)
Jordi Bardia
juin 6, 2024
Partager:
NHibernate est un puissant outil de mappage objet-relationnel (Object Relational Mapping)(ORM) conçu pour être utilisé avec le Framework .NET. Il offre aux développeurs un moyen efficace de combler le fossé entre le monde orienté objet des applications .NET et le monde relationnel des bases de données. En utilisant NHibernate, vous pouvez réduire de manière significative la quantité de code standard nécessaire à la mise en œuvre des couches d'accès aux données, ce qui rend vos applications .NET plus propres et plus faciles à maintenir.
Le rôle de l'ORM dans la simplification des interactions avec les bases de données
Les frameworks ORM comme NHibernate simplifient les interactions avec les bases de données relationnelles en permettant aux développeurs de travailler avec des données en termes d'objets et de leurs propriétés plutôt qu'en termes d'instructions SQL. Cette abstraction permet aux développeurs de se concentrer davantage sur la logique commerciale de leurs applications et moins sur les commandes SQL sous-jacentes et le schéma de la base de données. Par exemple, NHibernate s'occupe de la génération et de l'exécution de SQL, ce qui permet d'effectuer des opérations telles que des insertions, des suppressions et des mises à jour avec de simples conversions et manipulations d'objets.
Mise en place de NHibernate dans un projet .NET
Pour commencer à utiliser NHibernate dans votre projet .NET, la première étape consiste à installer le paquetage NHibernate. Cela peut se faire facilement via le gestionnaire de paquets NuGet de Visual Studio en utilisant la commande suivante :
Install-Package IronPdf
Configuration de NHibernate avec un fichier de configuration XML
Une fois NHibernate installé, l'étape suivante consiste à le configurer. Cela implique la création d'un fichier de mappage Hibernate qui détaille les paramètres de votre serveur de base de données et les détails du mappage de vos objets avec les tables de la base de données. Le fichier XML principal, généralement nommé hibernate.cfg.xml, inclut des paramètres tels que la chaîne de connexion à la base de données, le dialecte, et d'autres paramètres spécifiques à la base de données.
L'un des composants clés de NHibernate est la Session Factory, qui est conçue à l'aide du modèle de conception factory. Ce composant crée des objets Session qui gèrent la connexion à la base de données et contiennent les opérations transactionnelles. La création de l'usine de sessions est coûteuse et n'est généralement effectuée qu'une fois par durée de vie de l'application, ce qui en fait un élément crucial pour l'optimisation des performances.
Classes et méthodes clés dans NHibernate
NHibernate s'articule autour de plusieurs classes et méthodes essentielles. Par exemple, l'interface ISession joue un rôle fondamental dans NHibernate, en facilitant la création de sessions de recherche et de manipulation de données. Des méthodes comme OpenSession aident les développeurs à démarrer des transactions, à exécuter des commandes SQL et à interroger la base de données en utilisant soit des instructions SQL, soit le HQL propre à NHibernate(Langage de requête Hibernate).
Mapper des entités vers des tables de base de données avec NHibernate
Le mappage d'entités dans NHibernate est réalisé au moyen de fichiers de mappage, généralement écrits en XML. Ces fichiers, souvent nommés d'après la classe d'entités(par exemple, Employee.hbm.xml)définissent la correspondance entre les propriétés d'une entité et les colonnes d'une table de base de données. Un fichier de mappage typique comprend le nom de la classe, le nom de la table et des détails sur chaque propriété, y compris la clé primaire, le nom de la colonne et le type de données.
Aperçu détaillé des propriétés et des attributs utilisés dans les fichiers de cartographie
Dans ces fichiers de mappage, vous pouvez spécifier divers attributs pour chaque propriété, tels que des contraintes de non nullité ou des contraintes d'unicité. NHibernate permet également d'effectuer des mappages complexes tels que des relations "un à plusieurs" et "plusieurs à un", fournissant ainsi un ensemble d'outils puissants pour représenter des structures de données relationnelles dans un cadre orienté objet.
Exécuter des commandes SQL et des transactions dans NHibernate
NHibernate simplifie le CRUD(Créer, lire, mettre à jour, supprimer) en faisant abstraction des commandes SQL sous-jacentes. Les développeurs peuvent effectuer ces opérations sans écrire de code SQL explicite, mais en utilisant les méthodes fournies par l'interface ISession. Par exemple, pour ajouter une nouvelle entité à la base de données, il suffit de créer une nouvelle instance de l'objet, de définir ses propriétés et d'utiliser la méthode Save de la ISession.
Gérer les transactions avec `ITransaction
Les transactions dans NHibernate sont gérées via l'interface ITransaction, qui assure l'intégrité et la cohérence des données. En utilisant la méthode BeginTransaction de ISession, les développeurs peuvent s'assurer que toutes les opérations sont terminées avec succès avant de livrer les données à la base de données, ou revenir en arrière si quelque chose ne va pas, ce qui permet de maintenir la stabilité de vos données.
Exemple de code complet
Cet exemple comprend l'installation des fichiers de configuration et de mappage NHibernate et montre comment effectuer des opérations de création, de lecture, de mise à jour et de suppression à l'aide de NHibernate.
using NHibernate;
using NHibernate.Cfg;
using System;
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()
{
sessionFactory = new Configuration().Configure().BuildSessionFactory();
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);
transaction.Commit();
Console.WriteLine("Employee created: " + newEmployee.Id);
}
}
static void ReadEmployee(int id)
{
using (var session = sessionFactory.OpenSession())
{
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())
{
var employee = session.Get<Employee>(id);
employee.FirstName = newFirstName;
session.Update(employee);
transaction.Commit();
Console.WriteLine("Employee updated: " + employee.FirstName);
}
}
static void DeleteEmployee(int id)
{
using (var session = sessionFactory.OpenSession())
using (var transaction = session.BeginTransaction())
{
var employee = session.Get<Employee>(id);
session.Delete(employee);
transaction.Commit();
Console.WriteLine("Employee deleted");
}
}
}
using NHibernate;
using NHibernate.Cfg;
using System;
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()
{
sessionFactory = new Configuration().Configure().BuildSessionFactory();
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);
transaction.Commit();
Console.WriteLine("Employee created: " + newEmployee.Id);
}
}
static void ReadEmployee(int id)
{
using (var session = sessionFactory.OpenSession())
{
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())
{
var employee = session.Get<Employee>(id);
employee.FirstName = newFirstName;
session.Update(employee);
transaction.Commit();
Console.WriteLine("Employee updated: " + employee.FirstName);
}
}
static void DeleteEmployee(int id)
{
using (var session = sessionFactory.OpenSession())
using (var transaction = session.BeginTransaction())
{
var employee = session.Get<Employee>(id);
session.Delete(employee);
transaction.Commit();
Console.WriteLine("Employee deleted");
}
}
}
Imports NHibernate
Imports NHibernate.Cfg
Imports System
Public Class Employee
Public Overridable Property Id() As Integer
Public Overridable Property FirstName() As String
Public Overridable Property LastName() As String
End Class
Friend Class Program
Private Shared sessionFactory As ISessionFactory
Shared Sub Main()
sessionFactory = (New Configuration()).Configure().BuildSessionFactory()
CreateEmployee()
ReadEmployee(1)
UpdateEmployee(1, "UpdatedName")
DeleteEmployee(1)
End Sub
Private Shared Sub CreateEmployee()
Using session = sessionFactory.OpenSession()
Using transaction = session.BeginTransaction()
Dim newEmployee = New Employee With {
.FirstName = "Iron",
.LastName = "Software"
}
session.Save(newEmployee)
transaction.Commit()
Console.WriteLine("Employee created: " & newEmployee.Id)
End Using
End Using
End Sub
Private Shared Sub ReadEmployee(ByVal id As Integer)
Using session = sessionFactory.OpenSession()
Dim employee = session.Get(Of Employee)(id)
Console.WriteLine("Read Employee: " & employee.FirstName & " " & employee.LastName)
End Using
End Sub
Private Shared Sub UpdateEmployee(ByVal id As Integer, ByVal newFirstName As String)
Using session = sessionFactory.OpenSession()
Using transaction = session.BeginTransaction()
Dim employee = session.Get(Of Employee)(id)
employee.FirstName = newFirstName
session.Update(employee)
transaction.Commit()
Console.WriteLine("Employee updated: " & employee.FirstName)
End Using
End Using
End Sub
Private Shared Sub DeleteEmployee(ByVal id As Integer)
Using session = sessionFactory.OpenSession()
Using transaction = session.BeginTransaction()
Dim employee = session.Get(Of Employee)(id)
session.Delete(employee)
transaction.Commit()
Console.WriteLine("Employee deleted")
End Using
End Using
End Sub
End Class
Portabilité des bases de données et caractéristiques d'interopérabilité
NHibernate est conçu pour assurer la portabilité des bases de données. Grâce à la configuration de son dialecte, NHibernate peut s'adapter à la plupart des bases de données SQL avec un minimum de changements dans la base de code. Cela signifie que vous pouvez passer d'un serveur SQL à MySQL ou Oracle sans avoir à réécrire votre couche d'accès aux données.
Adapter NHibernate à divers systèmes de base de données comme SQL Server
Les fichiers de configuration XML de NHibernate permettent aux développeurs de spécifier le dialecte SQL spécifique à leur système de base de données. Cela fait de NHibernate une solution flexible qui peut être facilement adaptée pour fonctionner avec pratiquement n'importe quelle base de données relationnelle qui supporte SQL, garantissant que votre application est portable à travers différents systèmes de base de données.
Utilisation de NHibernate avec IronPDF
Intégration de NHibernate avecIronPDF est une combinaison puissante qui peut améliorer vos applications .NET. Il vous permet de gérer les opérations de base de données avec NHibernate tout en tirant parti d'IronPDF pourgénérer des documents PDF de vos données. Imaginez un scénario dans lequel votre application doit fournir des documents spécifiques à l'utilisateur, tels que des rapports d'employés, qui doivent être générés et téléchargés au format PDF. NHibernate C# peut gérer efficacement les processus de récupération des données de votre base de données, tandis qu'IronPDF peut convertir ces données en fichiers PDF bien formatés.
Installer IronPDF
Tout d'abord, assurez-vous qu'IronPDF est ajouté à votre projet. Vous pouvez l'inclure via le gestionnaire de paquets NuGet en installant le paquet IronPDF.
Install-Package IronPdf
Install-Package IronPdf
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'Install-Package IronPdf
Exemple de code
Voyons plus en détail comment mettre cela en œuvre dans votre application. Après avoir configuré NHibernate et récupéré les données nécessaires de la base de données, telles que les informations sur les employés, vous préparerez un modèle HTML qui représente la manière dont le document PDF doit apparaître. Ce modèle HTML peut être rempli dynamiquement avec des données obtenues à partir de NHibernate. Par exemple, si vous générez un rapport pour un employé, le modèle comprendra des espaces réservés pour le nom de l'employé, son numéro d'identification et d'autres détails pertinents.
Voici un exemple de code détaillé qui montre comment récupérer des données à l'aide de NHibernate et les convertir en PDF à l'aide d'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 HtmlToPdf 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");
}
}
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 HtmlToPdf 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");
}
}
Imports IronPdf
Imports NHibernate
Shared Sub CreateEmployeeReport(ByVal employeeId As Integer)
' Open a session to interact with the database
Using session = OpenSession()
' Retrieve the employee object based on the provided ID
Dim employee = session.Get(Of Employee)(employeeId)
' Create an instance of the HtmlToPdf class from IronPDF
Dim renderer = New ChromePdfRenderer()
' Create the HTML content for the PDF, embedding employee data into the HTML
Dim 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
Dim pdf = renderer.RenderHtmlAsPdf(htmlTemplate)
' Save the generated PDF to a file
pdf.SaveAs("EmployeeReport.pdf")
End Using
End Sub
Dans ce code, OpenSession() est une méthode qui initialise une session NHibernate, utilisée pour récupérer les données des employés. La classe ChromePdfRenderer d'IronPDF prend alors le modèle HTML rempli avec les données récupérées et le rend au format PDF. Ce PDF est enregistré localement, mais il pourrait également être transmis directement à un utilisateur par le biais d'une interface web.
Conclusion
Dans ce tutoriel, nous avons exploré comment NHibernate simplifie les opérations de base de données dans les applications .NET et comment son intégration avec IronPDF améliore la fonctionnalité en permettant la génération de documents PDF dynamiques. NHibernate fournit de solides outils de gestion des données, tandis qu'IronPDF offre un moyen pratique de créer des PDF de qualité professionnelle à partir de modèles HTML remplis de données.
IronPDF est disponible pour uneessai gratuit, et les licences commencent à $749, offrant une solution économique pour intégrer une génération de PDF puissante dans vos applications. Ensemble, ces outils offrent une solution complète pour la gestion des données et la production de documents, idéale pour les entreprises comme pour les projets de moindre envergure.
Jordi maîtrise parfaitement Python, C# et C++. Lorsqu'il ne met pas à profit ses compétences chez Iron Software, il se consacre à la programmation de jeux. Partageant des responsabilités en matière de tests de produits, de développement de produits et de recherche, Jordi apporte une valeur ajoutée considérable à l'amélioration continue des produits. Cette expérience variée le stimule et l'engage, et il dit que c'est l'un des aspects qu'il préfère dans son travail chez Iron Software. Jordi a grandi à Miami, en Floride, et a étudié l'informatique et les statistiques à l'université de Floride.
< PRÉCÉDENT Ocelot .NET (Comment ça marche pour les développeurs)
SUIVANT > Exemple de Rebus .NET Core (Comment ça marche pour les développeurs)
Des millions d'ingénieurs dans le monde entier lui font confiance
Réservez une démo en direct gratuite
Réservez une démonstration personnelle de 30 minutes.
Pas de contrat, pas de détails de carte, pas d'engagements.
Voici ce à quoi vous pouvez vous attendre :
Une démonstration en direct de notre produit et de ses principales fonctionnalités
Obtenez des recommandations de fonctionnalités spécifiques au projet
Toutes vos questions trouvent réponse pour vous assurer de disposer de toutes les informations dont vous avez besoin. (Aucun engagement de votre part.)
CHOISIR L'HEURE
VOS INFORMATIONS
Réservez votre démo en direct gratuite
Fiable par plus de 2 millions d'ingénieurs dans le monde entier