ORM(Object-relation mapping) 라이브러리 로써, GoLang 커뮤니티에서 굉장히 수요가 높은 라이브러리입니다.
https://gorm.io/
package db
import (
"database/sql"
"gorm.io/driver/mysql"
"gorm.io/gorm"
"ourCodelabs.kr/common"
)
type MyDB struct {
GormDB *gorm.DB
SqlDB *sql.DB
DbType string
}
func GetGormCon() (gormDB *MyDB) {
dbConfig := mysql.Config{
DSN: common.MariaDBUrl,
//DefaultStringSize: 256,
//DisableDatetimePrecision: true,
//DontSupportRenameIndex: true,
//DontSupportRenameColumn: true,
//SkipInitializeWithVersion: false,
}
db, err := gorm.Open(mysql.New(dbConfig), &gorm.Config{})
if err != nil {
panic(err)
}
sqlDB, _ := db.DB()
//Connection Pool Set
sqlDB.SetMaxIdleConns(10)
sqlDB.SetMaxOpenConns(100)
gormDB = &MyDB{
GormDB: db,
SqlDB: sqlDB,
DbType: "MariaDB",
}
return
}
func CloseDB(sqlDB *sql.DB) {
err := sqlDB.Close()
if err != nil {
panic(err)
}
}
기존 gorm.Open() 을 통해서 사용했을때 코드가 조금 지저분해지는 경우가 보여,
구조체 선언 후 gormDB와, Golang 에서 제공해주는 sqlDB을 편하게 나누어 사용하였더니,
조금 더 가독성이 좋아지더군요.
[GoLang] DB 작업 중, Null 처리에 대한 문제 해결 (0) | 2022.08.31 |
---|---|
Zap과 file-rotatelogs 를 통한 Custom Logging (0) | 2022.08.30 |
[Go Lang] Delay 줘서 함수 실행시키기 (0) | 2022.08.26 |
[Go Log]Go Log library 사용하기 (0) | 2022.08.18 |
[Go] Post로 파라미터 보내는 방법 (0) | 2022.08.11 |