zoukankan      html  css  js  c++  java
  • LSJ_NHibernate第一章 NHibernate介绍

    前言:

      说起NHibernate网上资料真不少,但用的人却并不多,说起java的SSH框架大家可能就知道了,这里的H指的就是Hibernate,一款好用的ORM框架,在.net重写了这款好用的框架,名字叫NHibernate.

    LSJ_NHibernate项目已开源,觉得有用的帮忙点个星星,非常感谢,地址:https://git.oschina.net/tibos/LSJ_NHibernate

                                                         

    我的NHibernate学习之旅也是从网上找资料开始,在此特别感谢以下两篇博客的博主,想学习的可以去看看,写的非常详细了 

    NHibernate系列文章一:NHibernate介绍    (丹妮大叔)

    NHibernate从入门到精通系列(1)——NHibernate概括  (刘东)

    根据项目的需求进行分析,简单的来说我们无非是做了两件事,1.把数据存进去,2.把数据取出来,术语:面向数据编程,我们选用ORM无非是满足需求,高效,规范

    这里我把对数据库操作的需求分为4个等级

    当你的项目达到第三个等级的时候,你就应该考虑使用ORM框架了,这样不单单是完成任务,还能更高效.

    这里我列出学习过程中容易遇到的问题,方便大家更好的学习NHibernate

    1.配置文件错误

     1      /// <summary>
     2         /// 链接信息,初始化NH
     3         /// </summary>
     4         public static ISessionFactory SessionFactory
     5         {
     6             get
     7             {
     8                 if (_sessionFactory == null)
     9                 {
    10                     var path = HttpContext.Current.Server.MapPath("/bin/hibernate.cfg.xml");
    11                     var cfg = new NHibernate.Cfg.Configuration().Configure(path);
    12                     _sessionFactory = cfg.BuildSessionFactory();
    13                 }
    14                 return _sessionFactory;
    15             }
    16         }

    出错可能

    1.配置文件hibernate.cfg.xml没有设置成始终复制,这样项目的bin文件里找不到配置文件

    2.配置的数据库链接字符串出错

    3.缺少对应驱动的dll,比如mysql就要引用相应的驱动

    4.数据库账号的权限不够,NHibernate会自动隐射表,以及生成外键

    2.未找到映射文件

    出错可能

    1.mapp文件没有设置成嵌入的资源

    2.mapp里的类型跟实体类或者数据库里的类型不一致

    3.联合查询,一对一,一对多,多对一没有关联到数据

    出错可能

    1.lazy="false" 没有设置成立即加载

    初次搭建项目可能比较耗时,但是我觉得这个学习成本是值得的,特别是mapp里的类型,第一次建议不要复制粘贴,当你项目能够正常运行,恭喜你成功了第一步,接下来为大家介绍几款工具,让NHibernate如虎添翼.

    1.代码生成器 推荐动软代码生成器,当然根据个人喜好,比如T4....,动软的代码生成器模板默认就支持NHibernate,我根据自己项目需求重写了模板,模板放在项目的DB文件夹下,可以直接生成Mapp,Model,IDAL,DAL,BLL,百度上面有使用教程,非常的简单.

    2.sql跟踪器,推荐NHProf.exe 可以记录某个过程中执行的所有sql语句,以及耗时,非常的实用.

    比如我的一个关联查询,它会自动记录执行的sql语句,以及参数,耗时

     

  • 相关阅读:
    线程
    i/o流
    编码
    File类
    How to put an object on the request in a servlet
    How to forward from a Java servlet to a JSP
    Window.scrollTo()
    JavaScript code to let users double-click to move back to the top of the page
    How to create zebra stripes in JSP tables
    How to set the default input focus on a field in an HTML web form
  • 原文地址:https://www.cnblogs.com/tibos/p/6201777.html
Copyright © 2011-2022 走看看