study/백엔드

Go에서 GORM을 이용한 PostgreSQL 연동 – 데이터베이스 CRUD 시작하기

octo54 2025. 4. 8. 10:41
반응형

Go에서 GORM을 이용한 PostgreSQL 연동 – 데이터베이스 CRUD 시작하기

이번 글에서는 Go 프로젝트에 PostgreSQL 데이터베이스를 연동하고, ORM 라이브러리인 GORM을 이용해 실제 데이터를 저장하고 조회하는 CRUD 로직을 구현해보겠습니다.
이제부터는 Admin Dashboard API에서 진짜 사용자 데이터를 다루는 단계로 넘어갑니다.


✅ 1. GORM이란?

GORM은 Go 언어를 위한 가장 인기 있는 ORM 라이브러리로,

  • 모델 ↔ 테이블 자동 매핑
  • CRUD 메서드 기본 제공
  • 관계 설정 (1:N, N:M 등)
  • 마이그레이션 기능 지원
    등을 제공합니다.

✅ 2. GORM & PostgreSQL 설치

go get -u gorm.io/gorm
go get -u gorm.io/driver/postgres

✅ 3. PostgreSQL 연결 설정

반응형

📄 config/db.go

package config

import (
  "gorm.io/driver/postgres"
  "gorm.io/gorm"
  "log"
  "os"
)

var DB *gorm.DB

func Connect() {
  dsn := "host=localhost user=postgres password=yourpass dbname=admin_db port=5432 sslmode=disable"
  database, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})

  if err != nil {
    log.Fatal("DB 연결 실패: ", err)
  }

  DB = database
  log.Println("✅ DB 연결 완료")
}

✅ 4. User 모델 생성

📄 models/user.go

package models

type User struct {
  ID       uint   `gorm:"primaryKey"`
  Name     string `json:"name"`
  Email    string `json:"email" gorm:"unique"`
  Password string `json:"-"`
}

✅ 5. 마이그레이션 실행

func Init() {
  Connect()
  DB.AutoMigrate(&models.User{})
}

📍 main.go에서 호출:

func main() {
  config.Init()
  ...
}

✅ 6. CRUD 핸들러 예시

🟩 유저 생성

func CreateUser(w http.ResponseWriter, r *http.Request) {
  var user models.User
  json.NewDecoder(r.Body).Decode(&user)

  result := config.DB.Create(&user)
  if result.Error != nil {
    http.Error(w, "유저 생성 실패", http.StatusBadRequest)
    return
  }

  w.WriteHeader(http.StatusCreated)
  json.NewEncoder(w).Encode(user)
}

🟦 유저 목록 조회

func GetUsers(w http.ResponseWriter, r *http.Request) {
  var users []models.User
  config.DB.Find(&users)
  json.NewEncoder(w).Encode(users)
}

✅ 7. 프로젝트 구조 예시

go-admin-api/
├── config/
│   └── db.go
├── models/
│   └── user.go
├── internal/user/
│   ├── handler.go
│   └── service.go

✅ 마무리

이제 Go API 서버에서 PostgreSQL과 연동하여 실제 데이터를 저장, 조회할 수 있게 되었습니다.
다음 글에서는 JWT 기반 로그인/인증 기능을 추가하여 Admin Dashboard 전용 API 보안을 강화할 예정입니다.


 

GoPostgreSQL연동, GORM사용법, GoORM라이브러리, GoCRUD예제, GolangDB연동, RESTAPI데이터, Go마이그레이션, PostgreSQL연결, GoAdmin백엔드, GORM모델정의