zoukankan      html  css  js  c++  java
  • NHibernate之Load和Get的区别

    一。Load方法

    1. Load()方法可以对查询方法进行优化
    2. Load()方法实际得到的是一个proxy对象,并没立即查询数据库,只有对对象的属性进行访问时,才查询数据库。在NHibernate中,被称为Laze Loading(延迟加载)
    3. Load()方法得到的对象,如果对象不存在,访问对象的属性,会报异常
    4. 当需要使用实体对象,而又不需要访问对象属性时,宜使用Load()方法,如Delete

      如下图,load()只加载了一个代理对象,并没有访问数据库

    using (ITransaction rs = session.BeginTransaction())
                    {
                        TplCustomer tplCustomer = new TplCustomer() 
                        {
                            FirstName="孙悟空",
                            LastName="KIng"
                        };
                        //session.Save(tplCustomer);
                        
                        var model = session.Load<TplCustomer>(150228);
                        session.Close();
                    }

    当访问对象的属性,或Delete的时候,才会去查询数据库。

     1 using (ITransaction rs = session.BeginTransaction())
     2                 {
     3                     TplCustomer tplCustomer = new TplCustomer() 
     4                     {
     5                         FirstName="孙悟空",
     6                         LastName="KIng"
     7                     };
     8                     //session.Save(tplCustomer);
     9                     
    10                     var model = session.Load<TplCustomer>(150228);
    11                     Console.WriteLine(model.FirstName);//访问load加载的对象属性,前提时对象不能为空,否在异常。
    12                     session.Close();
    13                 }

    二。get()方法

      Get()方法,立即查询数据库,如果数据不存在,返回为空。

  • 相关阅读:
    python 函数(二)
    python 函数(一)
    python 文件操作
    python标准数据类型 Bytes
    购物车代码
    关于python数据类型的一些举例
    栈的应用实例
    python 数据类型
    python相关的编码,运算
    Oracle篇 之 查询行及概念
  • 原文地址:https://www.cnblogs.com/king-tao/p/13388587.html
Copyright © 2011-2022 走看看