DTO 3

Pydantic 옵션 하나로 ORM 을 DTO 모델로 변환하기

ORM 에서 DTO 로 모델 변환하기 ORM(Object-Relational Mapping) 객체를 통해 DB의 데이터를 가져왔다면 이를 DTO(Data Transfer Object)를 통해 다른 레이어로 전달하고 싶을 것이다. 이 글에서는 Pydantic 의 from_attributes=True 옵션을 활용하여 손쉽게 DTO를 생성하는 방법을 설명하고자 한다. 본론에 앞서 우선 ORM을 DTO로 변환하는 다양한 방법들을 살펴보자. (본론으로 넘어가고 싶다면 생략해도 좋다) 예를 들어 아래처럼 ORM과 DTO 모델이 명시되어 있다고 해보자. from sqlalchemy import Column, Integer, String from sqlalchemy.ext.declarative import declar..

저장소 패턴(Repository Pattern) 도입기

*보안상 일부 명칭을 모호하게 표현하였으며 실제 소스코드가 아닌 설명을 위한 샘플 코드를 사용하였습니다. 저장소 패턴 도입 프로젝트 입사 후, 첫 실무 프로젝트로 저장소 패턴(Repository Pattern) 도입 프로젝트를 진행했다. 저장소 패턴이란? 저장소 패턴은 모든 데이터가 메모리상에 존재하는 것처럼 가정하고 이를 추상화하여 데이터 접근과 관련된 구현 사항을 감춘다. 저장소를 제외한 다른 레이어는 더 이상 저장소의 구현에 대해 신경 쓸 필요 없이 인터페이스로만 소통한다. 저장소 패턴을 도입한 이유는 기존 운영하던 ‘A’ 서버(보안상 ‘A’라 지칭)의 레이어가 Controller - Service 로만 구성되어 있었고 이와 관련하여 문제점을 가지고 있었기 때문이다. 기존 문제점 1. 비즈니스 로직..

Python _ @dataclass 사용법과 타입 확인

파이썬에서는 @dataclass를 통해 데이터의 타입을 명시하고 안정적으로 다룰 수 있습니다. 이 글에서는 간단한 사용법을 소개하고 타입 확인까지 해보겠습니다. @dataclass 사용법 먼저 다음처럼 코드를 작성합니다. from dataclasses import dataclass @dataclass() class Data: name: str int: int dict: dict name은 str, int는 int, dict는 dict로 타입을 지정하였습니다. 이어서 데이터를 만들어보겠습니다. data1 = Data( name = "변덕순", int = 1, dict = {"a":"b"} ) Data클래스를 활용해 data1 이라는 인스턴스를 만들었습니다. print로 name과 타입을 출력해보겠습니다. ..