github/jinzhu/orm
和 gorm.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)
gopackage 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)
gopackage 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 回复