因为有ORM的出现,所以在使用ORM组件的时候,在数据访问层中的输入输出参数几乎都是实列对象(或其数组),
但是在没有ORM组件的时候,有必要按照ORM的思想,构造类实体,在操作的时候输入输入都以类的实列为最小单位吗?比如查询一个学生(student类)信息,本来传入一个ID就可以查到,那么有必要将传入的参数改为student类型吗?比如构造一个student a=new student(); 然后赋值a.id=1;
然后将这个a作为参数传入方法查询这个学生的信息,有必要这么做吗?
但是在没有ORM组件的时候,有必要按照ORM的思想,构造类实体,在操作的时候输入输入都以类的实列为最小单位吗?比如查询一个学生(student类)信息,本来传入一个ID就可以查到,那么有必要将传入的参数改为student类型吗?比如构造一个student a=new student(); 然后赋值a.id=1;
然后将这个a作为参数传入方法查询这个学生的信息,有必要这么做吗?
另外,这样其实影响速度的啊,
在面向对象的系统中,比如C#,我们如何知道两个对象是否相等?
比如:
Person p1 = new Person() { Name = "Zhangsan", ID = 1, Age = 17 };
Person p2 = new Person() { Name = "Zhangsan", ID = 1, Age = 17 };
Console.WriteLine(p1 == p2); // return false
很明显,这两个对象不同。
那么ORM框架做什么呢?它会映射PK,并且重写 Equals() 和 GetHashCode() 方法。
在一个ORM系统中,如果 PK 被正确映射,那么 p1 和 p2 是相等的。如ORM的目标,它将数据库和业务对象分离开来,业务中我们根本不关心 id 是不是 pk,所以避免传递 id 而是传递对象,让 ORM 框架去处理。
如果我们业务规则修改,比如将 e-mail 作为 pk 了(很多网站都是用 email 作为账户的),很明显,ORM 框架因为隔绝了数据库和业务关系,从而不需要修改代码,就可以转换过来,这就是ORM的价值。
每次看到caozhy的回答 都能学到些东西~~