Files
a301_mmo_game_server/ReadMe.md
2026-03-01 17:00:52 +09:00

86 lines
1.9 KiB
Markdown

# DB 사용법
## 구조
```
MMOServer (실행 프로젝트 Test파일들은 임시용)
├── RDB/
├──── Handlers/
│ └──── TestHandler.cs
├──── Models/
│ └──── TestM.cs
├──── Repositories/
│ └──── TestRepository.cs
└──── Services/
└──── TestService.cs
ServerLib (DLL)
├── RDB/
├──── Database/
│ └── DbConnectionFactory.cs
├──── Handlers/
│ ├── HandlerHelper.cs
│ └── Response.cs
└──── Repositories/
└── ARepository.cs
```
---
## 데이터 흐름
```
호출부 (Packet 등)
↓ 파라미터 전달
Handler → Service 호출 + 응답 포맷팅 (string, HelperHander 사용)
Service → 비즈니스 로직, 유효성 검사, 예외 throw
Repository → DB 접근 (Class? / bool / long 반환)
MySQL
```
---
## 반환 타입 정리
| 레이어 | 반환 타입 |
|--------|---------------------------------------------------|
| Repository | `class?` / `IEnumerable<class>` / `long` / `bool` |
| Service | 동일 (그대로 올림) |
| Handler | `string` (JSON 포장) |
---
## 새 테이블 추가 시
1. `MMOServer/RDB/Models/` 에 Model 추가
2. `MMOServer/RDB/Repositories/` 에 Repository 추가 (ARepository 상속)
3. `MMOServer/RDB/Services/` 에 Service 추가
4. `MMOServer/RDB/Handlers/` 에 Handler 추가
**ServerLib (DLL) 은 건드릴 필요 없음.**
---
## Connection Pool 설정(MMOServer/config.json)
```
{
"Database": {
"Host": "localhost",
"Port": "0000",
"Name": "XXXX",
"User": "root",
"Password": "11212121",
"Pooling": {
"MinimumPoolSize": "5",
"MaximumPoolSize": "100",
"ConnectionTimeout": "30",
"ConnectionIdleTimeout": "180"
}
}
}
```