乐闻世界logo
搜索文章和话题

github/jinzhu/orm和gorm.io/gorm有什么区别?

1 个月前提问
1 个月前修改
浏览次数14

1个答案

1

github/jinzhu/ormgorm.io/gorm 实际上都指向了同一个项目——GORM。这是一个用Go语言开发的强大ORM库(对象关系映射库),用于处理数据库操作。但是,这两个URL的区别主要在于项目的版本和维护状态。

1. github/jinzhu/orm

  • 作者和版本: 这是GORM的早期版本,由Jinzhu(一个著名的Go语言开发者)创建和维护。
  • 状态: 该版本现在已不再维护。Jinzhu已经停止了对这个库的更新和支持。
  • GitHub仓库: 这版本的代码曾托管在github.com/jinzhu/gorm。注意不是github/jinzhu/orm,可能是你记错了。这个版本称为GORM v1。

2. gorm.io/gorm

  • 作者和版本: 这是GORM的当前版本,也是由Jinzhu团队维护,但它已经转移到了新的网站和组织gorm.io下。
  • 状态: 这是活跃的版本,持续在更新和维护。它引入了许多新的功能和改进,比如更好的插件支持、上下文支持(context support)和增强的关系处理。
  • GitHub仓库: 代码托管在github.com/go-gorm/gorm。这个版本称为GORM v2。

示例和变化

以用户模型的创建和查询作为示例,展示这两个版本如何处理:

GORM v1 (github.com/jinzhu/gorm)

go
package main import ( "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/sqlite" ) type User struct { gorm.Model Name string } func main() { db, err := gorm.Open("sqlite3", "test.db") if err != nil { panic("failed to connect database") } defer db.Close() // Migrate the schema db.AutoMigrate(&User{}) // Create db.Create(&User{Name: "Jinzhu"}) // Read var user User db.First(&user, 1) // find user with id 1 }

GORM v2 (gorm.io/gorm)

go
package main import ( "gorm.io/gorm" "gorm.io/driver/sqlite" ) type User struct { ID uint Name string } func main() { db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{}) if err != nil { panic("failed to connect database") } // Migrate the schema db.AutoMigrate(&User{}) // Create db.Create(&User{Name: "GORM"}) // Read var user User db.First(&user, 1) // find user with id 1 }

总结

这两个URL的主要区别在于版本和维护状态。如果你正在开始一个新项目,推荐使用gorm.io/gorm,因为它提供了最新的功能和更好的支持。老项目如果在使用v1,并且没有升级的需求,则可以继续使用,但需要注意未来可能因为安全和功能需求而必须升级。

2024年8月12日 17:04 回复

你的答案