C#/C# 교과서

[C# 교과서] 57. 인메모리 데이터베이스 프로그래밍 맛보기

서니션 2023. 2. 10. 11:29
728x90
반응형

인메모리 데이터베이스

  • 변수, 배열, 구조체, 클래스 등에 저장되는 데이터를 다루는 기술
  • 프로그램을 실행하고 메모리에 저장된 데이터는 프로그램이 종료되면 자동으로 소멸
  • 메모리에 임시로 저장된 데이터들은 파일 또는 데이터베이스에 저장하여 영구적으로 보관 가능

CRUD 작업하기

  • Create (입력)
  • Read (출력) 또는 Retrieve (검색)
  • Update (수정)
  • Delete (삭제)

리포지토리 패턴

프로그래밍을 할 때 자주 사용하는 유형을 패턴이라고 함

데이터베이스 프로그래밍에서는 일반적으로 리포지토리 패턴이 가장 많이 사용

  • 모델 클래스 (model class)는 데이터 구조를 나타냄
  • 리포지토리 클래스(repository class)는 데이터에 대한 입력, 출력, 수정, 삭제 등을 담당하는 클래스를 의미
  • 컨텍스트 클래스(context class)는 모델과 리포지토리를 사용하여 업무 하나를 묶어 관리하는 역할

모델, 리포지토리, 컨텍스트 클래스를 만들고 사용하기

모델 클래스를 만들고, 이 클래스를 사용하여 데이터를 채워 넘겨주는 리포지토리 클래스를 만듦

그리고 이를 호출하는 컨텍스트 클래스를 만들고, 마지막으로 Main() 메서드에서 테스트하는 단계로 모델, 리포지토리, 컨텍스트, 메인 클래스의 단계를 사용함

using System;
using System.Collections.Generic;

/// <summary>
/// 모델 클래스
/// </summary>
public class SignBase
{
    public int SignId { get; set; }
    public string Email { get; set; }
    public string Password { get; set; }
}

/// <summary>
/// 리포지토리 클래스
/// </summary>
public class SignRepository
{
    public List<SignBase> GetAll()
    {
        var signs = new List<SignBase>()
        {
            new SignBase() { SignId = 1, Email = "a@a.com", Password = "1234"},
            new SignBase() { SignId = 2, Email = "b@b.com", Password = "2345"},
            new SignBase() { SignId = 3, Email = "c@c.com", Password = "3456"},
        };
        return signs;
    }
}

/// <summary>
/// 컨텍스트 클래스
/// </summary>
public class SignContext
{
    public List<SignBase> Signs
    {
        get
        {
            return (new SignRepository()).GetAll();
        }
    }
}

/// <summary>
/// 테스트 클래스
/// </summary>
class SignBaseSignRepository
{
    static void Main()
    {
        var signs = (new SignContext()).Signs;

        foreach (var sign in signs)
        {
            Console.WriteLine($"{sign.SignId}, {sign.Email}, {sign.Password}");
        }
    }
}

 

728x90
반응형