Repository 3

[SmashUp!] 캐쥬얼 배틀로얄 프로젝트 레포지토리 계층

개요지난 서비스계층에 이어 이번엔 트랜잭션 처리를 통한 DB와의 통신을 담당하는 레포지토리 계층에 대해 작성한 내용을 공유하고자 한다. 현재 서버에서는 회원가입, 로그인 등과 같은 인증과 방 생성, 참가, 퇴장, 조회 등 매칭 관련 트랜잭션, 게임 시작 및 종료 시 방 상태를 업데이트하는 트랜잭션을 수행한다. 데이터베이스는 PostgreSQL을 사용하였으므로 pqxx라이브러리를 사용해 DB서버와 통신하며, 고립성을 보장하여 멀티 플레이 환경에서의 동시성 처리를, 원자성을 보장하여 트랜잭션 도중 한 곳에서 예외가 발생한다면 해당 작업 이전의 작업들을 모두 롤백해 주는 것을 가장 중요시하여 로직을 작성하였다. user_repository.h// repository/user_repository.h#pragm..

[SmashUp!] 캐쥬얼 배틀로얄 프로젝트 계층형 아키텍쳐 구현

개요빌드 환경을 구현하였으니 본격적인 서버 구현에 앞서 구현하고자 하는 아키텍쳐를 구상해봤다.내가 개발해야할 서버에선 클라이언트 세션을 관리하고 클라이언트 요청에 따라 인증, 매칭등의 서비스 로직을 구현해야 한다. 이를 데이터베이스와 통신하여 트랜잭션 처리를 통해 검증 및 상태 업데이트를 진행해 주어야 한다. 따라서 controller를 통해 클라이언트 요청을 구분하여 각 기능에 맞는 API를 호출할 수 있도록 서비스를 핸들해 주기로 했다. 예를 들어 인증 관련은 auth, 매칭 관련은 room, 게임 생명 주기 관리는 game의 컨트롤러 타입을 지정하고, 컨트롤러 핸들러를 통해 각 API가 호출될 수 있도록 나누어줬다. 처음엔 패킷을 주고 받을 때 최대한 적은 리소스를 사용하고자했지만 게임 내 이벤트에..

[Keepro] 무인 사물함 프로젝트 MVC 모델 작성 Repository

개요MVC 아키텍처에서 Repository는 데이터 접근 및 영속성 로직을 캡슐화하는 중요한 구성 요소이다.데이터베이스는 데이터베이스나 다른 저장소와 직접적인 상호작용을 담당한다.주로 CRUD작업을 수행하며 비즈니스 로직과 데이터 액세스 로직을 분리하여 관심사의 분리를 실현한다. 데이터 접근 메서드들을 인터페이스로 정의하여 일관된 데이터 조작 방식을 제공한다.모델 객체의 상태를 데이터베이스에 반영하거나, 데이터베이스에서 모델 객체로 데이터를 변환한다. SpringBoot에서는 실제 쿼리를 통한 로직 구현 뿐만 아니라 Create와 Update를 진행해 주는 save와 findById를 통해 특정 레코드를 탐색하는 작업을 별도의 기능 작성 없이 사용할 수 있다. 하기에 레포지토리 인터페이스를 오름차순에 따..

728x90