From 445f7faa61e789bf96a520a45ad74dfd72fb506b Mon Sep 17 00:00:00 2001 From: sfuwen Date: Wed, 5 Jun 2019 19:16:09 +0800 Subject: [PATCH 1/2] fix typo --- ch5-web/ch5-05-database.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ch5-web/ch5-05-database.md b/ch5-web/ch5-05-database.md index 95d6f94..4a7b5cf 100644 --- a/ch5-web/ch5-05-database.md +++ b/ch5-web/ch5-05-database.md @@ -4,7 +4,7 @@ ## 5.5.1 从 database/sql 讲起 -Go官方提供了`database/sql`包来给用户进行和数据库打交道的工作,实际上`database/sql`库就只是提供了一套操作数据库的接口和规范,例如抽象好的SQL预处理(prepare),连接池管理,数据绑定,事务,错误处理等等。官方并没有提供具体某种数据库实现的协议支持。 +Go官方提供了`database/sql`包给用户来进行和数据库打交道的工作,实际上`database/sql`库就只是提供了一套操作数据库的接口和规范,例如抽象好的SQL预处理(prepare),连接池管理,数据绑定,事务,错误处理等等。官方并没有提供具体某种数据库实现的协议支持。 和具体的数据库,例如MySQL打交道,还需要再引入MySQL的驱动,像下面这样: @@ -155,9 +155,9 @@ num, err := o.QueryTable("cardgroup").Filter("Cards__Card__Name", cardName).All( 你可以看得出来这个Filter是有表join的操作么?当然了,有深入使用经验的用户还是会觉得这是在吹毛求疵。但这样的分析想证明的是,ORM想从设计上隐去太多的细节。而方便的代价是其背后的运行完全失控。这样的项目在经过几任维护人员之后,将变得面目全非,难以维护。 -当然,我们不能否认ORM的进步意义,它的设计初衷就是为了让数据的操作和存储的具体实现所剥离。但是在上了规模的公司的人们渐渐达成了一个共识,由于隐藏重要的细节,ORM可能是失败的设计。其所隐藏的重要细节对于上了规模的系统开发来说至关重要。 +当然,我们不能否认ORM的进步意义,它的设计初衷就是为了让数据的操作和存储的具体实现相剥离。但是在上了规模的公司的人们渐渐达成了一个共识,由于隐藏重要的细节,ORM可能是失败的设计。其所隐藏的重要细节对于上了规模的系统开发来说至关重要。 -相比ORM来说,SQL Builder在SQL和项目可维护性之间取得了比较好的平衡。首先sql builer不像ORM那样屏蔽了过多的细节,其次从开发的角度来讲,SQL Builder简单进行封装后也可以非常高效地完成开发,举个例子: +相比ORM来说,SQL Builder在SQL和项目可维护性之间取得了比较好的平衡。首先sql builder不像ORM那样屏蔽了过多的细节,其次从开发的角度来讲,SQL Builder进行简单封装后也可以非常高效地完成开发,举个例子: ```go where := map[string]interface{} { @@ -195,7 +195,7 @@ if order_id != 0 { res, err := historyModel.GetList(where, limit, orderBy) ``` -你的系统里有类似上述样例的大量`if`的话,就难以通过测试用例来覆盖到所有可能的sql组合了。 +你的系统里有大量类似上述样例的`if`的话,就难以通过测试用例来覆盖到所有可能的sql组合了。 这样的系统只要发布,就已经孕育了初期的巨大风险。 From b2c9a71240132bd6cba85719de4a37e39afa9061 Mon Sep 17 00:00:00 2001 From: wahaha Date: Mon, 8 Jul 2019 22:35:19 +0800 Subject: [PATCH 2/2] Update ch5-05-database.md --- ch5-web/ch5-05-database.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ch5-web/ch5-05-database.md b/ch5-web/ch5-05-database.md index 4a7b5cf..bf031e7 100644 --- a/ch5-web/ch5-05-database.md +++ b/ch5-web/ch5-05-database.md @@ -4,7 +4,7 @@ ## 5.5.1 从 database/sql 讲起 -Go官方提供了`database/sql`包给用户来进行和数据库打交道的工作,实际上`database/sql`库就只是提供了一套操作数据库的接口和规范,例如抽象好的SQL预处理(prepare),连接池管理,数据绑定,事务,错误处理等等。官方并没有提供具体某种数据库实现的协议支持。 +Go官方提供了`database/sql`包给用户进行和数据库打交道的工作,实际上`database/sql`库就只是提供了一套操作数据库的接口和规范,例如抽象好的SQL预处理(prepare),连接池管理,数据绑定,事务,错误处理等等。官方并没有提供具体某种数据库实现的协议支持。 和具体的数据库,例如MySQL打交道,还需要再引入MySQL的驱动,像下面这样: