逻辑名与实际名 #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
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
逻辑名,是指逻辑上的表名和列名。直观地说,就是结构体名和字段名。
实际名,是指数据库中表结构定义的名字,包括表名和列名。
在 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