티스토리 뷰
반응형
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모델정의
'study > 백엔드' 카테고리의 다른 글
Swagger로 API 문서 자동화하기 – Go API 협업의 핵심 도구 (1) | 2025.04.10 |
---|---|
JWT 기반 사용자 인증 구현 – Go API 보안의 핵심 (1) | 2025.04.09 |
RESTful API 라우팅 개선 – Go에서 gorilla/mux 활용하기 (1) | 2025.04.07 |
Go로 간단한 REST API 서버 만들기 – net/http 기반 실습 (1) | 2025.04.07 |
Go 모듈과 패키지 관리 이해하기 – 실전 프로젝트 구조의 시작 (0) | 2025.04.04 |
※ 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Ktor
- App Router
- 프론트엔드
- llm
- 개발블로그
- 프론트엔드면접
- AI챗봇
- Next.js
- nodejs
- 딥러닝
- REACT
- rag
- JAX
- CI/CD
- 백엔드개발
- Prisma
- SEO최적화
- 파이썬알고리즘
- gatsbyjs
- Python
- PostgreSQL
- NestJS
- Docker
- fastapi
- kotlin
- flax
- SEO 최적화
- nextJS
- seo 최적화 10개
- 웹개발
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
글 보관함
반응형