GORM은 초기화 중에 Config를 사용할 수 있습니다.
type Config struct { |
SkipDefaultTransaction
GORM은 데이터 일관성을 보장하기 위해 트랜잭션 내에서 실행되는 쓰기(생성/갱신/삭제) 작업을 수행하며, 필요하지 않은 경우 초기화 중에 이 작업을 비활성화할 수 있습니다.
db, err := gorm.Open(sqlite.Open("gorm.db"), &gorm.Config{ |
NamingStrategy
GORM을 사용하면 사용자가 Namer
인터페이스를 구현해야 하는 기본 NamingStrategy
를 재정의하여 명명 규칙을 변경할 수 있습니다.
type Namer interface { |
기본 NamingStrategy
도 다음과 같은 몇 가지 옵션을 제공합니다:
db, err := gorm.Open(sqlite.Open("gorm.db"), &gorm.Config{ |
Logger
이 옵션을 재정의하여 GORM의 기본 logger를 변경할 수 있으며, 자세한 내용은 Logger를 참조하세요.
NowFunc
새 타임스탬프를 만들 때 사용할 함수를 변경할 수 있습니다.
db, err := gorm.Open(sqlite.Open("gorm.db"), &gorm.Config{ |
DryRun
실행하지 않고 SQL
을 생성하면 생성된 SQL을 준비하거나 테스트하는 데 사용할 수 있으며, 자세한 내용은 Session을 참조하십시오.
db, err := gorm.Open(sqlite.Open("gorm.db"), &gorm.Config{ |
PrepareStmt
PreparedStmt
는 SQL을 실행할 때 prepared statement를 생성하고 향후 호출 속도를 높이기 위해 캐시합니다. 자세한 내용은 Session을 참조하세요.
db, err := gorm.Open(sqlite.Open("gorm.db"), &gorm.Config{ |
DisableNestedTransaction
Db 트랜잭션 내부에서 또 다른 트랜잭션을 시작할 때, GORM은 중첩 트랜잭션을 지원하기 위해서 SavePoint와 RollbackTo 메서드를 사용합니다. DisableNestedTransaction 옵션을 이용하여 비활성화할 수 있으며, 자세한 내용은 Session을 참고하세요.
AllowGlobalUpdate
Enable global update/delete, refer Session for details
DisableAutomaticPing
GORM은 초기화 후에 데이터베이스와의 연결 상태를 확인하기 위해 기본적으로 Ping을 요청합니다. 그러나 자주 변경하지 않아 기본적인 Ping 요청을 제거하거나, 자원 소모나 부하를 줄이기 위해 이 기능을 비활성화할 수 있습니다. 또한 개발자가 직접 데이터베이스 연결 상태를 통제하고자 할 때, 필요한 시점에만 Ping을 보내도록 이 옵션을 활용할 수 있습니다.
db, err := gorm.Open(sqlite.Open("gorm.db"), &gorm.Config{ |
DisableForeignKeyConstraintWhenMigrating
GORM creates database foreign key constraints automatically when AutoMigrate
or CreateTable
, disable this by setting it to true
, refer Migration for details
db, err := gorm.Open(sqlite.Open("gorm.db"), &gorm.Config{ |