ORM 框架中为什么需要默认启用事务
编辑
610
2023-06-07
背景
发现很多 ORM 框架都有 auto-commit 的配置,在执行任意写操作时,实际上都会开一个事务,然后自动提交。针对 GORM 框架深究了一下。
框架的行为
根据文档 Transactions | GORM - The fantastic ORM library for Golang, aims to be developer friendly.,GORM 框架会对写操作(create/update/delete)默认开启事务来保证数据一致性。这个行为可以通过配置全局禁用或者在单个操作中手动禁用。
// Globally disable
db, err := gorm.Open(sqlite.Open("gorm.db"), &gorm.Config{
SkipDefaultTransaction: true,
})
// Continuous session mode
tx := db.Session(&Session{SkipDefaultTransaction: true})
tx.First(&user, 1)
tx.Find(&users)
tx.Model(&user).Update("Age", 18)
why?
ORM 框架通常提供了一些逻辑层面的 API,例如批量插入、更新等,用户层面可能只是一个 update 操作,但实际上执行了多条 sql,用户不一定意识到这个问题,因此默认开启事务是更优解。
- 0
- 0
-
赞助
微信赞赏码 -
分享