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;

风险降低!

原文地址:https://www.cnblogs.com/hznet/p/1860982.html