Gorm和Xorm区别

Gorm和Xorm傻傻分不清楚,二者都是Go语言的ORM库。

Gorm

文档连接:http://gorm.book.jasperxu.com/
1、hook机制(Before/After Create/Save/Updaye/Delete/Find)
2、对象关系Has One,Has Many,Belongs To,Many To Many,Polymorphism
3、热加载
4、支持原生sql在这里插入代码片
5、支持事务:在创建,更新,查询,删除时将被调用,如果任何回调返回错误,gorm将停止未来操作并回滚所有更改。
6、链式api
7、支持的数据库有:mysql、postgre、sqlite、sqlserver
8、内置日志记录器
Gorm有内置的日志记录器支持,默认情况下,它会打印发生的错误

// 启用Logger,显示详细日志
db.LogMode(true)

// 禁用日志记录器,不显示任何日志
db.LogMode(false)

// 调试单个操作,显示此操作的详细日志
db.Debug().Where("name = ?", "jinzhu").First(&User{})

Xorm

文档连接:https://lunny.gitbooks.io/xorm-manual-zh-cn/index.html
下载:go get github.com/go-xorm/xorm
1、支持的数据库有:Mysql、MyMysql、Postgre、SQlite、Mssql
2、支持事务:当使用事务处理时,需要创建Session对象
3、链式api
4、支持原始SQL语句和ORM操作的混合执行
5、查询缓存
xorm内置了一致性缓存支持,不过默认并没有开启。要开启缓存,需要在engine创建完后进行配置,如: 启用一个全局的内存缓存

cacher := xorm.NewLRUCacher(xorm.NewMemoryStore(), 1000)
engine.SetDefaultCacher(cacher)

6、可根据数据库反转生成代码,即根据数据库自动生成xorm的结构体
7、级联加载
8、提供sql语句日志输出
9、支持批量查询处理
10、自动化的读写分离/主从式

Gorm文档比Xorm文档要详细,目前我只用过Xorm进行开发。


版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/LH7777/article/details/107512143