Heim  >  Artikel  >  Backend-Entwicklung  >  laravel查询构造器DB还是ORM

laravel查询构造器DB还是ORM

WBOY
WBOYOriginal
2016-08-04 09:21:111499Durchsuche

这两者有什么区别,各该用在什么场景中

回复内容:

这两者有什么区别,各该用在什么场景中

我们所有操作都是走的orm,因为操作简单 直观明了 好维护,性能是低一些 但还没有多致命,真有并发需要优化了 用DB也不一定能解决问题。还是要了解orm每个方法的意思,不然你可能一不小心就会多出来很多很多sql,比如取列表的时候加个with不要仅仅靠关系来获取联表的其他内容。

没用过laravel,但估计理解应该一样,DB是直接写SQL操作数据库,ORM是利用对象操作数据库。

用SQL还是用ORM都能操作数据库,SQL是关系型数据库的查询语言,而关系型数据库是大主流,对SQL的理解和使用是必须的。但程序开发目前更倾向于OOP思想,因为它有更人性化的表达力,而SQL表达力上不如OOP。表达能力越好的语言,更利于人类整理组织代码逻辑,更具表达能力的语言在整个开发效率上有质的优化,代码也会更稳健,可能出现的BUG会更少。

大段的SQL要进行调试不会比ORM进行调试要容易,并且ORM一般能切换不同数据库,这些就是ORM的优势。稳健的系统更应该使用ORM,这能有效避免失误引起的低级错误。但ORM的代码并不统一,你在laravel熟悉了它的ORM,不能直接用于其它framework。

如果你入行不长,属于新手,那尽可能多用SQL,因为SQL不可避免要用到,深度了解SQL是必须的,多用可以当作是练习。如果你觉得自己已经经验丰富了,那就用ORM,这样可以降低失误率。

建议用DB门面直接操作数据库,因为ORM性能低。

数据查询上面,ORM不会比DB差的,就比如with,是用了sql最基本的拆语句优化。ORM的损耗仅仅是代码层面的,这已经不算是问题了。

ORM适用于一般到中等复杂度的查询,也适用于各种模型操作,比如有一个关系targets,你可以直接用targets()->delete()等等进行关系数据操作。
ORM中的软删除,自动更新时间字段,字段保护,字段类型转换,都会在一些规范而且系统的工程中让你受益。

另外DB的场景:一些比较复杂的查询语句,事务操作,等都需要DB来完成。

DB主要是一个查询构造器(SQLBuilder),它会帮你把输入的参数转变成SQL语句去数据库里查询,和你自己手动写SQL语句本质上是一样的。
ORM是一个对象关系映射(Object Relational Mapper)工具,它会把数据库中的数据映射成对象和集合对象,你无需接触底层数据,可以直接调用映射出来的对象进行开发。

DB适合用于对性能要求高或者业务逻辑简单的项目,ORM适合业务逻辑比较复杂的项目。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn