📜  NHibernate-基本ORM(1)

📅  最后修改于: 2023-12-03 15:33:07.435000             🧑  作者: Mango

NHibernate-基本ORM

NHibernate是一个基于Java的Hibernate ORM框架的.NET版本,它提供了一种将面向对象的域模型映射到传统的关系数据库中的方法,同时提供了数据检索和查询机制。

ORM的概念

ORM(Object-Relational Mapping)是一种将关系数据库中的数据映射到面向对象的程序中的技术。它将数据库和程序之间的转换过程自动化,并减少了编写SQL代码的需求。通过将数据库表映射到程序中的类和对象,ORM框架可以实现面向对象的编程范式,并使程序员能够更方便地对数据进行管理。

NHibernate的特点

NHibernate具有以下特点:

  • 支持多种数据库,如SQL Server、Oracle、MySQL等;
  • 易于使用,可以通过XML映射文件或注释将对象映射到数据库表中;
  • 支持延迟加载,可以最小化性能开销;
  • 支持事务管理和缓存,可以提高应用的性能;
  • 支持LINQ查询;
  • 开源免费。
NHibernate的基本用法
  1. 安装NHibernate,可以通过NuGet来安装;

  2. 配置hibernate.cfg.xml文件,包括数据库类型、连接字符串、映射文件等:

     <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
       <session-factory>
         <property name="dialect">NHibernate.Dialect.MsSql2012Dialect</property>
         <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
         <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
         <property name="connection.connection_string">Data Source=.;Initial Catalog=testdb;User ID=test;Password=test</property>
         <mapping assembly="NHibernateDemo"/>
       </session-factory>
     </hibernate-configuration>
    
  3. 创建实体类,用于映射数据库表:

    public class Customer
    {
        public virtual int Id { get; set; }
        public virtual string Name { get; set; }
        public virtual string Address { get; set; }
    }
    
  4. 创建映射文件,将实体类映射到数据库表:

     <?xml version="1.0" encoding="utf-8"?>
     <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="NHibernateDemo">
       <class name="NHibernateDemo.Customer, NHibernateDemo">
         <id name="Id">
           <generator class="native"/>
         </id>
         <property name="Name"/>
         <property name="Address"/>
       </class>
     </hibernate-mapping>
    
  5. 创建SessionFactory:

    var configuration = new Configuration();
    configuration.Configure();
    var sessionFactory = configuration.BuildSessionFactory();
    
  6. 在保存或查询数据时,通过打开Session来进行操作:

    using (var session = sessionFactory.OpenSession())
    {
        //保存数据
        using (var transaction = session.BeginTransaction())
        {
            var customer = new Customer { Name = "张三", Address = "上海市" };
            session.Save(customer);
            transaction.Commit();
        }
    
        //查询数据
        var customers = session.Query<Customer>().ToList();
    }
    
结语

NHibernate是一个功能强大的ORM框架,可以降低开发人员的工作量并提高开发效率。通过NHibernate,我们可以更方便地对数据库进行操作,同时还可以实现面向对象的编程范式。