43 votes

Qu'est-ce que NHibernate?

Suite à ma question précédente . Je suis un programmeur ASP.NET et je me demande comment NHibernate m'aiderait à faire mon travail plus facilement et plus rapidement qu’autrement. Faites comme si je ne connaissais rien à NHibernate. De quoi s'agit-il et que peut-il faire pour moi?

82voto

jrista Points 20950

NHibernate est un ORM, ou Object-Relational Mapper. Dans la même ligne que LINQ to SQL, Entity Framework, LLBLGen, et d'autres, outils ORM enlever la plupart de la nécessité d'écrire des procédures stockées pour gérer les accès aux données courantes (CRUD) pour votre entreprise les objets. Outils ORM exiger que vous créez (soit manuellement, soit avec un concepteur visuel...dépend de celui que vous choisissez) une spécification de mappage qui retrace les propriétés de votre carte des objets qui les colonnes de vos tables et/ou de points de vue dans votre base de données. Lorsque vous avez besoin de récupérer des objets, l'ORM outil génère le SQL pour vous, et l'envoie à la base de données. Lorsque vient le temps de mettre à jour vos objets, l'ORM ne sera pas seulement de créer le SQL de type insert, update, et delete pour vous...il sera aussi le lot de ces commandes ainsi que d'une connexion unique et lot de commandes sont envoyées à la base de données et effectue l'ensemble de la chose, d'une transaction. Outils ORM peut également améliorer l'efficacité de vos requêtes en vous permettant de sélectionner des objets graphiques dans un seul aller, générant le plus efficace SQL pour la tâche.

Avec les outils ORM, vous avez encore besoin de requête, toutefois vous avec les méthodes de base sur l'ORM du contexte ou de l'objet de la session, ou avec un langage de requête pour que l'ORM. Ces jours, la plupart des ORM, y compris NHibernate, assurent également la prise en charge LINQ, vous permettant d'utiliser la norme syntaxe LINQ pour interroger votre modèle objet, qui à son tour est traduite en SQL les requêtes sur votre base de données pour vous.

Le profit OU cartographes, c'est que vous centralisez la quasi-totalité de votre code dans votre domaine, plutôt que de le diviser entre le domaine et stockées procs. Vous alléger la procédure stockée charge sur votre base de données, en fournissant moins d'une barrière à la refactorisation de votre base de données en cas de besoin, fournir une plus grande agilité de l'entreprise, non seulement dans votre domaine, mais aussi avec votre schéma de base de données. Puisque vous n'avez pas à écrire de SQL, et surtout si vous utilisez LINQ, vous pouvez souvent créer une application efficace dans moins d'effort avec une baisse à long terme des coûts d'entretien.

À côté de l'inévitable guerre avec votre DBA (si vous en avez), OU cartographes peut apporter des avantages considérables à la table qui peut réduire l'effort de mise en œuvre, améliorer la maintenabilité, et de fournir une plus grande agilité de l'entreprise.

Espérons que la réponse à la question. ;)

7voto

scott Points 457

Une bonne introduction et un bon tutoriel peuvent être trouvés ici Summer of NHibernate Screencasts .

Dans chaque vidéo, il fournit une introduction à un sujet de nHibernate puis plonge dans du code tout en expliquant comment faire différentes choses. Je l'ai trouvé très utile.

4voto

Razvan Dimescu Points 171

nhibernate est un outil ORM

dimecasts a quelques vidéos qui peuvent vous aider à démarrer

Vous pouvez trouver plus d'informations ici

Et même plus d'infos sur google :)

3voto

DoniG Points 250

Manning a un livre assez bon: NHibernate In Action

Le livre est sur NHibernate Version 1.2, mais la plupart s’applique à la dernière version.

1voto

Jeffrey Hines Points 1507

NHibernate est un ORM (Object-Relational Mapper) de l'outil. Il crée un modèle orienté objet, basé sur votre schéma de base de données.

À partir de https://www.hibernate.org/343.html

NHibernate principales caractéristiques:

  • Naturel modèle de programmation - NHibernate prend en charge naturel OO idiome, l'héritage, le polymorphisme, la composition et le .NET collections cadre, génériques, y compris les collections.

  • Native .NET - NHibernate API utilise .NET conventions, et les expressions idiomatiques

  • Soutien pour fine des modèles d'objet - une grande variété de mappages pour les collections et les objets qui en dépendent

  • Pas au moment de la construction du bytecode amélioration - il n'y a pas de supplément à la génération de code ou bytecode étapes de traitement dans votre procédure de construction

  • Les options de requête - NHibernate adresses les deux côtés du problème, non seulement pour obtenir des objets dans la base de données, mais aussi la façon de les faire sortir de nouveau

  • SQL personnalisée - préciser l'exacte SQL que NHibernate doit utiliser pour persister vos objets. Les procédures stockées sont pris en charge sur Microsoft SQL Server.

  • Prise en charge des "conversations" - NHibernate prend en charge à long terme de contextes de persistance, de le détacher/rattacher des objets, et prend soin de verrouillage optimiste automatiquement

  • Libre/open source - NHibernate est sous licence LGPL (Lesser GNU Public Licence)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X