분류 전체보기(212)
-
QueryDSL 엔티티 변경 시 빌드 오류 해결 방법
QueryDSL 엔티티 변경 시 빌드 오류 해결 방법🚀 들어가며QueryDSL을 활용해 쿼리를 작성할 때, 엔티티의 필드(테이블 변수)를 수정하면 기존의 QClass에서 해당 필드를 찾지 못해 빌드가 실패하는 문제가 발생할 수 있다.이 문제를 해결하려면 변경된 엔티티 필드를 반영한 QClass를 새로 생성해야 하지만, 빌드 과정에서 기존 QClass가 남아 있어 오류가 발생하는 경우가 많다.기존 방식대로라면, 해당 쿼리들을 주석 처리 → 빌드 진행 → QClass 갱신 → 주석 해제 후 수정이라는 번거로운 과정이 필요하다. 하지만, 이를 자동화하면 불필요한 수작업을 줄이고 더 효율적으로 개발할 수 있다.이번 글에서는 Gradle 설정을 통해 QClass를 자동으로 갱신하는 방법을 정리해보았다.✅ 1. ..
2025.03.01 -
MySQL Master-Slave Replication 설정
MySQL Master-Slave Replication 설정 문제풀이 플랫폼을 개발하면서 단일 MySQL을 사용하는 대신 쓰기 전용 DB(Master)와 읽기 전용 DB(Slave)를 분리하는 것이 더 적합하다고 판단했다.이러한 구조를 적용하면 읽기 부하를 효과적으로 분산할 수 있고, 백업 및 장애 대응 능력을 향상할 수 있다. 다만, 설정이 복잡해지고 데이터 동기화 지연 등의 단점도 존재한다.이 글에서는 MySQL Master-Slave Replication을 Docker 환경에서 설정하는 과정을 상세히 정리해 보았다.현재 진행 중인 프로젝트의 경우 문제풀이 플랫폼을 진행 중이다. 해당 플랫폼의 경우 관리자가 문제를 만들고 업데이트하는(Input, Update) 상황보단, 사용자가 문제를 읽는 경우(S..
2025.02.20 -
[Docker & Git Action] 이미지, 컨테이너 ~ 깃액션 사용까지 정리
1. 서론 - 도입 과정1. 도입 - Docker, 컨테이너와 이미지까지Docker의 학습 사유부터 CICD까지의 과정을 간략하게 설명하고 해당 코드들을 기록하려고 한다.초기에 프로젝트를 진행할 때 가장 걸리던 점이 서로의 개발환경이 다르다는 점이었다. 그래서 개발자가 업데이트가 된 코드 및 테스트를 진행하기 위해서는 각자 작업하는 환경에 맞는 세팅 값을 설정해줘야 했다. 또한 개발을 진행하다 보면 DB, Redis 등의 여러 가지 개발에 필요한 소프트웨어들이 존재하는데 그때에 맞춰서 해당 툴 및 데이터베이스를 깔아서 각 개발자마다 환경을 세팅해야 했다. 그렇기에 이때 생각한 것이 ‘컨테이너 개념을 배워서 적용시켜 보자’라는 것이었다.2. 중기 - DockerCompose까지이미지, 컨테이너 개념을 배우..
2024.09.29 -
[JPA]@Transactional이란
1. 서론프로젝트를 진행하고 코드를 작성할 때 DB를 사용하게 된다면 Spring Data JPA를 사용하게 된다. 그리고 이때 해당 JPA는 Java에서의 ORM의 표준으로 사용이 되며, Spring 프레임워크에서는 Spring Data JPA로 하여 사용을 하게 된다. 해당 JPA를 사용하면서 같이 등장하는 것이 바로 @Transactional 이다.해당 어노테이션은 트랜잭션 관리를 간편, 용이하게 해주는 어노테이션이다. 이를 통해 해당 백엔드 서버와 데이터베이스 간의 작업이 하나의 단위로 실행하도록 보장하는 역할이다. 그렇기에 지금까지는 이러한 논리적 하나의 단위(원자성)을 위해 항상 해당 트랜잭션을 기입해주었다.하지만 이번에 기능을 구현한 후 성능 개선을 위해 리팩토링 및 학습을 하던 도중 무분별..
2024.09.24 -
관심사 및 의존성
작성자 : @김민수작성일자 : 240821기술적 의사소통 : @김민수 @세현 임기존의 프로젝트를 리펙토링 하기 위해 각각의 서비스가 어떤 관심사에 의존성을 가지고 있는지 살펴보았다. 그리고 해당 관심사들의 서비스에서 통일되지 않는 코드를 보며 코드 가독성이 떨어진다고 생각하였다. 그리하여 먼저 어떤 서비스에서 어떤 관심사의 서비스를 의존성 주입으로 받는지 살펴보았다.Service Dependencies Service DependencieschatServicechatRepository chatroomRepositorynaverrestTemplateobjectMapper chatRoomServicechatroomRepository chatRepository userChatRoomRepository pos..
2024.08.21 -
[Spring] Category 구현하기
[Spring] Category 구현하기 쇼핑몰, 커뮤니티에 존재하는 주제를 표현할 때 자주 사용되는 것이 카테고리이다. 카테고리는 전형적인 계층형으로 서로 연관이 되는 구조이다. 해당 카테고리만을 단순히 구현해 보고 구현을 할 때 과정을 정리하려고 한다. 코드 먼저 코드들은 다음과 같다. 좀 더 구체화를 시키기 위해서는 인터페이스를 사용하고 DI를 사용하는 등의 과정을 거쳐야하는 것이 맞지만 현재의 경우 카테고리를 구현하는 것이 목표였기에 간단하게 컨트롤러, 엔티티, 서비스, 레포지토리 4개의 구성 요소만을 사용해서 진행을 하였다. 후에 다른 프로젝트를 진행할 때는 해당 부분에 대해 자세하게 세분화하고 DI를 지키는 식으로 진행을 할 예정이다. Controller package com.example.c..
2024.02.21