关于ORM的一些补充|青训营笔记

168 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天

在录播课程中有提到GORM的内容,不过基本上只是说了下用法,仅仅知道它是go的一个ORM库。因此我在课后查了一些ORM相应的资料,在这里略作补充。

关于ORM

Object Relational Mapping(对象关系映射)是一种将面向对象编程语言里的对象概念与数据库概念互相转换的技术,说的不那么抽象,举个栗子,就像我们在程序里定义一个对象通过orm就可以在数据库中创建一个表,然后通过实例化这个对象并执行各种操作,orm就会辅助我们,对于你对对象的操作对数据库中的表/字段/记录进行操作。(这是对象——数据库的映射,也有反过来的,总之orm的概念比这个例子广得多)

优点

ORM是一条在业务逻辑层和数据库层之间的桥梁,它简单易用(你甚至可以不懂数据库的详细用法),易懂(通过你所熟悉的编程语言对象来操作),整洁(ORM中通过函数的链式组合生成数据库操作语句,风格统一,相对简洁),方便(无需你手动写大量重复但又不得不写的数据库操作语句),具有相当多的优点。

顺带一提,成熟的orm框架基本都防sql注入。

缺点

当然,ORM的缺点也是有的。比如ORM对对象持久化一般是针对所有的属性,有时候为了一些业务需求,我们不希望对象的所有属性都被持久化。 同时,ORM毕竟还是一个自动化的中间层,方便好用的代价就是带来性能问题,这体现在两方面上:映射过程中产生的性能需要,以及自动化生成的算法不够高效的问题。

End

总之,ORM只是一个工具,既然能解决一些重复劳动,那它就是好工具。至于程序员本人,还望不要在自动化的帮助下迷失了自我~毕竟总有些问题需要我们人类来特殊处理嘛。