더북(TheBook)

10.6.1 gorm 초기 설정

app/controller 디렉터리에 gorm.go 파일을 생성하고 다음과 같이 코드를 작성한다.

▼ app/controllers/gorm.go

package controllers
 
import (
    “goblog/app/models”
 
“github.com/jinzhu/gorm” // ➊ gorm 패키지 임포트 “github.com/revel/revel” ) var ( db gorm.DB ) // ➋ GormController 정의 type GormController struct { *revel.Controller Txn *gorm.DB } // ➌ 데이터베이스 초기화 func InitDB() { var ( driver, spec string found bool )
// Read configuration. if driver, found = revel.Config.String(“db.driver”); !found { revel.ERROR.Fatal(“No db.driver found.”) } if spec, found = revel.Config.String(“db.spec”); !found { revel.ERROR.Fatal(“No db.spec found.”) }
// Open a connection. var err error db, err = gorm.Open(driver, spec) if err != nil { revel.ERROR.Fatal(err) }
// Enable Logger db.LogMode(true) migrate() } // ➍ 테이블 생성 func migrate() { db.AutoMigrate(&models.Post{}, &models.Comment{}) } // ➎ 트랜잭션 설정 // Begin a transaction func (c GormController) Begin() revel.Result { c.Txn = db.Begin() return nil } // Rollback if it’s still going (must have panicked). func (c GormController) Rollback() revel.Result { if c.Txn != nil { c.Txn.Rollback() c.Txn = nil } return nil } // Commit the transaction. func (c *GormController) Commit() revel.Result { if c.Txn != nil { c.Txn.Commit() c.Txn = nil } return nil }

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.