逻辑名与实际名 #68
flycash
started this conversation in
Show and tell
逻辑名与实际名
#68
Replies: 1 comment
-
其实有一些 ORM 框架是直接操作实际名,而且我也用过这一类的框架。但是带来的缺陷就是,如果我接受一个老项目,那么我就需要去看 DB 里面的表结构定义才能确定表名和列名。这对于我来说过于麻烦。 |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
逻辑名,是指逻辑上的表名和列名。直观地说,就是结构体名和字段名。
实际名,是指数据库中表结构定义的名字,包括表名和列名。
在 eorm 里面,所有的 API 操作的都是逻辑名。因为从 ORM 层面上来说用户是不需要知道实际的表名和列名的。也就是说,我们认为用户在看到 Go 中模型定义之后,用户就应该可以直接使用 eorm,而不必再去查询数据库,知道真实的表名和列名。这也可以被认为是解耦。
在一个复杂应用中,如果存活时间很长,那么就会出现定义模型和使用模型的人不是同一批人。举个简单的场景,假如说 A 最开始使用 eorm,并且定义了一个模型 User
A 知道
UserName
在实际的表里面是user_name
。但是后来这个项目移交给了 B,那么 B 在使用User
的时候,只需要直接用UserName
作为 eorm API 的输入,他不再需要关心对应到的实际列名是user_name
。万一将来,实际的列名从
user_name
修改为user_name_aaa
,那么绝大多数的代码都不再需要修改,因为字段名并没有发生改变。因此,eorm 选在使用逻辑名,而不是使用实际名。
Beta Was this translation helpful? Give feedback.
All reactions