• Nhibernate 在项目中的位置


    Nhibernate 是一个对象持久化框架,所谓持久化就是把数据保存在文件或关系数据库中.

    哪么Nhibernate 处于在持久化过程中的中间层,他负责把成功映射的对象转换成相应的SQL语句.

    再对数据库作增删改查操作,其中HQL是他内部的查询规则语句,哪么它到底有什么优势,为什么要用HQL呢?

     

    优点:

    1.对于一个大型的项目,开发人员是否对于数据层有所恐惧,为什么我们一直在写着简单,

    但又不得不写的语句,比如 Select * from A where id=@id ,

     

    哪么如果我们项目层次又很多.数据层写一个方法,工厂又要加上一个实例数据层的方法,

    然后业务层又写一个对应的方法,这样开发下去.整洁统一干净的结构带来了巨大的工作量成本,

    让开发人员重复着大量的相似代码.有了NHibernate 这些SQL语句,和方法都大大减少,

    当项目的数据库表数量不断增大,哪么这种优势越发突显.因为我们只要 " 映射 " 只要有了对象,

    和对象跟表结构的映射,哪么其它的工作都交给NHibernate 吧

    两个文件 :

    1.实体类

    2.实体类映射到表结构的xml文件.

     

    我认为Nhibernate 最大特点是对象映射,

    如果没有了对象映射哪么它就失去了灵魂.

    所以理解映射是灵活使用Nhibernate 的关键.

     

    让我们来先看看概念:

    1.在NHibernate 持久层中每个实体模型都对应了数据库中的一个表,

    每个属性都对应了表中的一个字段,每个实体对象对应了表中的一条记录。

     

    使用NHibernate 时数据库设计的一些想法

    1.在设计表结构时,保证每一个表都必须有主键

    2.在字段名字的定义上,最好不要用下划线,全部使用英文,

    个人建议使用首字母大写的缩写形式

     

    安全问题:

    不用担心NHibernate会被SQL注入,事实上他的注入风险要远低于你直接手写的风险,

    当开发人员累了是否不经意写出类似这种代码 : string sql = "select * from a where id=" + id;

    也许这种语句是你不想的.他破坏了你的原则"只用参数",但确写在了程序里.增加了风险,

     

    而NHibernate 的概念 对象属性永远对应着 表字段 当你的查询会被转成 类似这种 where id=@id;

    风险降低!

  • 相关阅读:
    appium知识01-环境设置
    移动端测试基础知识02
    魔术方法和反射
    面向对象开发: 封装, 继承, 多态
    正则的用法
    内置方法, 第三方模块(math, random, pickle, json, time, os, shutil, zip, tarfile), 导入包
    推导式(列表, 集合, 字典), 生成器
    迭代器, 高阶函数(map, filter, reduce, sorted) , 递归函数
    函数globals和locals用法, LEGB原则, 闭包函数 , 匿名函数
    字符串, 列表, 元祖, 集合, 字典的相关操作和函数, 深浅copy
  • 原文地址:https://www.cnblogs.com/hznet/p/1860982.html
Copyright © 2020-2023  润新知