今天接触了orm的概念。orm 全程 object relation mapping 对象映射关系,这到底是做什么的呢?orm是为了解决面向对象和关系数据库之间存在的互不匹配的现象的技术,c++里边我们经常说面向对象,也就是说我的操作都是可以看成以某个对象为基础,让这个对象进行一系列的操作,但是当我们在程序中进行数据库操作的时候,确实在和复杂的sql打交道,我们在程序中操作数据库的时候是通过一些库文件,然后将一些特定的sql语句输入给我们的数据库,这里很容易想到我们之前所说的防sql注入问题,orm就很好的解决了这些问题,这样让我们的开发不再关注这些数据库的细节,而是专心在业务逻辑上,甚至程序员不用懂数据库就可以进行开发,并且有了这个中间层之后,数据库的迁移操作也变得非常简单,当然orm也是由缺点的,并不是说orm能够帮你生成所有的业务语句,有些复杂的还是需要sql并且orm的性能也是要低于直接使用sql语句的。
比如说我们想要创建一张表的时候,在sql中我们就需要使用语句
orm的框架有很多,甚至很多人自己搭建了自己的框架,其实这就是一个程序和数据库之间的一个中间层,这里我们要说的是gorm是golang的一个orm框架。
CREATE TABLE users(“name” VARCHAR(45) NULL,’age’ INT NULL);
但是我们在使用gorm的时候
type User struct{
name string
age int
}
db.Table(“users”).CreateTable(&User{})
这两个语句意思是一样的,这里我们创建了名字叫做users的表,表的内容gorm是通过结构体来定