hoony's web study

728x90
반응형


1. GORM

ORM(Object-relation mapping) 라이브러리 로써, GoLang 커뮤니티에서 굉장히 수요가 높은 라이브러리입니다.
https://gorm.io/

 

GORM

The fantastic ORM library for Golang aims to be developer friendly.

gorm.io


2. 사용기

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을 편하게 나누어 사용하였더니,

조금 더 가독성이 좋아지더군요.

728x90

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading