🧑🏻💻 프로젝트/motimo
-
Flyway 이용기🧑🏻💻 프로젝트/motimo 2025. 6. 15. 15:18
✍️ 상황최근 진행 중인 프로젝트에서 TodoEntity와 TodoResultEntity 간의 관계를 어떻게 표현할지에 대해 고민할 일이 있었습니다.TodoResultEntity는 TodoEntity와 1:1 관계를 가지고 있지만 ORM 상에서는 연관관계 매핑을 하지 않고 단순히 todoId를 저장하는 방식을 택했습니다. @Column(name = "todo_id", nullable = false)private UUID todoId;연관관계를 명시적으로 선언하는 대신 ID를 직접 관리하면서 느슨하게 연결하는 구조로 설계 ❗ 팀원 리뷰에서 지적된 문제이 설계에 대해 팀원으로부터 다음과 같은 리뷰를 받았습니다. TodoResult와 Todo는 연관 관계를 맺어주는 게 좋지 않을까요?ID만 저장하는 방식으로 ..
-
UUID v4 / UUID v7🧑🏻💻 프로젝트/motimo 2025. 5. 30. 16:25
이번 프로젝트에서 UUID를 기본 키(PK)로 사용하기로 결정한 이후 어떤 성능적인 영향이 있을지에 대한 고민을 바탕으로 이 글을 작성하게 되었습니다.저희 프로젝트에서 사용하는 관계형 데이터베이스(RDB)는 PostgreSQL입니다. ✅ PostgreSQL의 Index는 기본적으로 B-Tree🐘 PostgreSQL 공식 문서 에 따르면PostgreSQL은 여러 인덱스 타입을 제공하지만 기본적으로 CREATE INDEX는 B-tree 인덱스를 생성합니다. B-tree는 대부분의 일반적인 상황에 적합하며 정렬 가능한 타입에 가장 효과적으로 동작합니다.📌 Hibernate에서 UUID 생성 방식Spring Data JPA에서 아래와 같이 UUID를 사용하는 경우@Entitypublic class UserE..
-
CQS / CQRS 패턴 적용기🧑🏻💻 프로젝트/motimo 2025. 5. 25. 18:17
⚠️ 작업 배경 및 문제 상황public class AuthService { private final UserService userService; @Transactional public User loginFromOAuth2(OAuth2UserInfo oAuth2UserInfo, String registrationId) { return userService.existsByEmail(oAuth2UserInfo.getEmail()) ? updateExistingUser(oAuth2UserInfo) : registerNewUser(oAuth2UserInfo, registrationId); }} 🌟 팀원의 피드백..! ?..