From 2f56a5e544d05c1d2b998f515c6e939122a7d251 Mon Sep 17 00:00:00 2001
From: jonghun <jonghuncu@gmail.com>
Date: Sat, 29 Jun 2024 01:49:45 +0900
Subject: [PATCH] =?UTF-8?q?#111=20fix:=20=EC=99=B8=EB=B6=80=20=ED=86=B5?=
 =?UTF-8?q?=EC=8B=A0=EC=8B=9C=20Token=EC=9D=84=20=ED=86=B5=ED=95=9C=20?=
 =?UTF-8?q?=EA=B0=9D=EC=B2=B4=20Entity=20=EC=A1=B0=ED=9A=8C=20-=20Id=20->?=
 =?UTF-8?q?=20Token?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../apply/repository/ApplyRepository.java     |  1 +
 .../domain/apply/service/ApplyService.java    |  9 +-
 .../comment/repository/CommentRepository.java |  3 +
 .../comment/service/CommentService.java       | 14 ++-
 .../notice/repository/NoticeRepository.java   |  2 +
 .../domain/notice/service/NoticeService.java  | 14 ++-
 .../domain/service/ProjectService.java        | 20 ++++-
 .../infrastructure/ProjectRepository.java     |  2 +
 .../service/ProjectLikeService.java           |  3 +-
 .../repository/ProjectUserRepository.java     |  2 +-
 .../service/ProjectUserService.java           |  4 +-
 .../repository/ScheduleRepository.java        |  1 +
 .../schedule/service/ScheduleService.java     |  5 +-
 .../ticket/repository/TicketRepository.java   |  2 +
 .../domain/ticket/service/TicketService.java  | 12 ++-
 .../repository/TicketUserRepository.java      |  2 +-
 .../ticketUser/service/TicketUserService.java |  2 +-
 .../synergybe/domain/user/IdTest.java         | 23 +++++
 .../domain/user/IdTestRepository.java         |  8 ++
 .../synergybe/domain/user/UUIDTest.java       | 23 +++++
 .../domain/user/UUIDTestRepository.java       |  8 ++
 .../generator/TokenGeneratorUUIDTest.java     | 47 ++++++++--
 .../domain/idtest/IdGenerateTest.java         | 88 +++++++++++++++++++
 .../domain/post/PostGeneratorTest.java        |  1 +
 24 files changed, 261 insertions(+), 35 deletions(-)
 create mode 100644 src/main/java/com/seoultech/synergybe/domain/user/IdTest.java
 create mode 100644 src/main/java/com/seoultech/synergybe/domain/user/IdTestRepository.java
 create mode 100644 src/main/java/com/seoultech/synergybe/domain/user/UUIDTest.java
 create mode 100644 src/main/java/com/seoultech/synergybe/domain/user/UUIDTestRepository.java
 create mode 100644 src/test/java/com/seoultech/synergybe/domain/idtest/IdGenerateTest.java

diff --git a/src/main/java/com/seoultech/synergybe/domain/apply/repository/ApplyRepository.java b/src/main/java/com/seoultech/synergybe/domain/apply/repository/ApplyRepository.java
index b8d455fc..4a13ef6b 100644
--- a/src/main/java/com/seoultech/synergybe/domain/apply/repository/ApplyRepository.java
+++ b/src/main/java/com/seoultech/synergybe/domain/apply/repository/ApplyRepository.java
@@ -11,6 +11,7 @@
 
 @Repository
 public interface ApplyRepository extends JpaRepository<Apply, Long>, ApplyRepositoryCustom {
+    Apply findByApplyToken(String applyToken);
 
 //    @Query(value = "SELECT * FROM apply WHERE user_id = :userId AND project_id = :projectId", nativeQuery = true)
 //    Optional<Apply> findByUserIdAndProjectId(@Param("userId") String userId, @Param("projectId") Long projectId);
diff --git a/src/main/java/com/seoultech/synergybe/domain/apply/service/ApplyService.java b/src/main/java/com/seoultech/synergybe/domain/apply/service/ApplyService.java
index d8864f86..ea5cd1f2 100644
--- a/src/main/java/com/seoultech/synergybe/domain/apply/service/ApplyService.java
+++ b/src/main/java/com/seoultech/synergybe/domain/apply/service/ApplyService.java
@@ -60,10 +60,11 @@ public GetApplyResponse createApply(String userToken, String projectToken) {
     }
 
     @Transactional
-    public void deleteApply(String userId, String applyId) {
+    public void deleteApply(String userId, String applyToken) {
         // todo
         // 사용자 권한 검증
         User user = userService.getUserByToken(userId);
+        Long applyId = getApplyId(applyToken);
         Apply apply = getApply(applyId);
         validateApplyUser(user, apply);
         applyRepository.delete(apply);
@@ -75,6 +76,10 @@ private void validateApplyUser(User user, Apply apply) {
         }
     }
 
+    public Long getApplyId(String applyToken) {
+        return applyRepository.findByApplyToken(applyToken).getId();
+    }
+
     @Transactional
     public void updateApplyStatusToAccept(String leaderId, String applyUserId, String projectId) {
         Apply apply = applyRepository.findApplyByUserIdAndProjectId(applyUserId, projectId);
@@ -140,7 +145,7 @@ public GetListApplyUserResponse getApplyUserList(String projectId) {
         return ApplyMapperEntityToDto.userListToResponse(users);
     }
 
-    public Apply getApply(String applyId) {
+    public Apply getApply(Long applyId) {
         return applyRepository.findById(applyId).orElseThrow(() -> new ApplyNotFoundException("신청내역이 존재하지 않습니다."));
     }
 }
diff --git a/src/main/java/com/seoultech/synergybe/domain/comment/repository/CommentRepository.java b/src/main/java/com/seoultech/synergybe/domain/comment/repository/CommentRepository.java
index 960967c6..a80c7447 100644
--- a/src/main/java/com/seoultech/synergybe/domain/comment/repository/CommentRepository.java
+++ b/src/main/java/com/seoultech/synergybe/domain/comment/repository/CommentRepository.java
@@ -7,9 +7,12 @@
 import org.springframework.stereotype.Repository;
 
 import java.util.List;
+import java.util.Optional;
 
 @Repository
 public interface CommentRepository extends JpaRepository<Comment, Long> {
     @Query(value = "SELECT comment_id FROM comment WHERE post_id = :postId", nativeQuery = true)
     List<String> findCommentIdsByPostId(@Param("postId") String postId);
+
+    Comment findByCommentToken(String commentToken);
 }
diff --git a/src/main/java/com/seoultech/synergybe/domain/comment/service/CommentService.java b/src/main/java/com/seoultech/synergybe/domain/comment/service/CommentService.java
index ab088344..e83401d4 100644
--- a/src/main/java/com/seoultech/synergybe/domain/comment/service/CommentService.java
+++ b/src/main/java/com/seoultech/synergybe/domain/comment/service/CommentService.java
@@ -19,6 +19,7 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.ArrayList;
 import java.util.List;
 
 @Service
@@ -63,8 +64,7 @@ public GetCommentResponse updateComment(UpdateCommentRequest request) {
     }
 
     public Comment findCommentById(String commentId) {
-        return commentRepository.findById(commentId)
-                .orElseThrow(() -> new CommentNotFoundException("존재하지 않는 댓글입니다."));
+        return commentRepository.findByCommentToken(commentId);
     }
 
     public void deleteComment(String commentId) {
@@ -72,8 +72,16 @@ public void deleteComment(String commentId) {
         commentRepository.delete(comment);
     }
 
+    public Long getCommentId(String commentToken) {
+        return commentRepository.findByCommentToken(commentToken).getId();
+    }
+
     public ListResponse<GetCommentResponse> getCommentList(String postId) {
-        List<String> commentIds = commentRepository.findCommentIdsByPostId(postId);
+        List<String> commentTokens = commentRepository.findCommentIdsByPostId(postId);
+        List<Long> commentIds = new ArrayList<>();
+        for (String commentToken : commentTokens) {
+            commentIds.add(getCommentId(commentToken));
+        }
 
         List<Comment> comments = commentRepository.findAllById(commentIds);
 
diff --git a/src/main/java/com/seoultech/synergybe/domain/notice/repository/NoticeRepository.java b/src/main/java/com/seoultech/synergybe/domain/notice/repository/NoticeRepository.java
index 525678c8..fc5dee6b 100644
--- a/src/main/java/com/seoultech/synergybe/domain/notice/repository/NoticeRepository.java
+++ b/src/main/java/com/seoultech/synergybe/domain/notice/repository/NoticeRepository.java
@@ -12,4 +12,6 @@
 public interface NoticeRepository extends JpaRepository<Notice, Long> {
     @Query(value = "SELECT notice_id FROM notice WHERE project_id = :projectId", nativeQuery = true)
     List<String> findNoticeIdsByProjectId(@Param("projectId") String projectId);
+
+    Notice findByNoticeToken(String noticeToken);
 }
diff --git a/src/main/java/com/seoultech/synergybe/domain/notice/service/NoticeService.java b/src/main/java/com/seoultech/synergybe/domain/notice/service/NoticeService.java
index 1105d7c8..5c742601 100644
--- a/src/main/java/com/seoultech/synergybe/domain/notice/service/NoticeService.java
+++ b/src/main/java/com/seoultech/synergybe/domain/notice/service/NoticeService.java
@@ -18,6 +18,7 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -64,12 +65,19 @@ public GetNoticeResponse getNotice(String noticeId) {
     }
 
     public Notice findNoticeById(String noticeId) {
-        return this.noticeRepository.findById(noticeId)
-                .orElseThrow(() -> new NoticeNotFoundException("존재하지 않는 공지입니다."));
+        return this.noticeRepository.findByNoticeToken(noticeId);
+    }
+
+    public Long getNoticeId(String noticeToken) {
+        return noticeRepository.findByNoticeToken(noticeToken).getId();
     }
 
     public ListResponse<GetNoticeResponse> getNoticeList(String projectId) {
-        List<String> noticeIds = noticeRepository.findNoticeIdsByProjectId(projectId);
+        List<String> noticeTokens = noticeRepository.findNoticeIdsByProjectId(projectId);
+        List<Long> noticeIds = new ArrayList<>();
+        for (String noticeToken : noticeTokens) {
+            noticeIds.add(getNoticeId(noticeToken));
+        }
 
         List<Notice> notices = noticeRepository.findAllById(noticeIds);
 
diff --git a/src/main/java/com/seoultech/synergybe/domain/project/domain/service/ProjectService.java b/src/main/java/com/seoultech/synergybe/domain/project/domain/service/ProjectService.java
index 1cbc26ec..802e5c23 100644
--- a/src/main/java/com/seoultech/synergybe/domain/project/domain/service/ProjectService.java
+++ b/src/main/java/com/seoultech/synergybe/domain/project/domain/service/ProjectService.java
@@ -112,7 +112,12 @@ public GetProjectResponse deleteProject(String userId, String projectId) {
         return GetProjectResponse.builder().build();
     }
 
-    public Project findProjectById(String projectId) {
+    public Long getProjectId(String projectToken) {
+        return projectRepository.findByProjectToken(projectToken).getId();
+    }
+
+    public Project findProjectById(String projectToken) {
+        Long projectId = getProjectId(projectToken);
         return projectRepository.findById(projectId)
                 .orElseThrow(() -> new ProjectNotFoundException("존재하지 않는 프로젝트입니다."));
     }
@@ -179,7 +184,12 @@ public Predicate toPredicate(Root<Project> projectRoot, CriteriaQuery<?> query,
     }
 
     public ListResponse<GetProjectResponse> getLikedProjectList(User user) {
-        List<String> projectIds = projectLikeService.findLikedProjectIds(user);
+        List<String> projectTokens = projectLikeService.findLikedProjectIds(user);
+        List<Long> projectIds = new ArrayList<>();
+        for (String projectToken : projectTokens) {
+            projectIds.add(getProjectId(projectToken));
+        }
+
         List<Project> projects = projectRepository.findAllById(projectIds);
 
         return new ListResponse(projects);
@@ -232,8 +242,12 @@ public ListResponse<GetProjectResponse> getRecommendListByUser(User user, Long e
             int endIdx = Math.min(startIdx + 10, projectIds.size());
 
             List<String> result = projectIds.subList(startIdx, endIdx);
+            List<Long> resultProjectIds = new ArrayList<>();
+            for (String projectToken : result) {
+                resultProjectIds.add(getProjectId(projectToken));
+            }
 
-            List<Project> projects = projectRepository.findAllById(result);
+            List<Project> projects = projectRepository.findAllById(resultProjectIds);
 
 
             log.info("Response from FastAPI: {}", response);
diff --git a/src/main/java/com/seoultech/synergybe/domain/project/infrastructure/ProjectRepository.java b/src/main/java/com/seoultech/synergybe/domain/project/infrastructure/ProjectRepository.java
index 4a8eaeb2..4cc5597f 100644
--- a/src/main/java/com/seoultech/synergybe/domain/project/infrastructure/ProjectRepository.java
+++ b/src/main/java/com/seoultech/synergybe/domain/project/infrastructure/ProjectRepository.java
@@ -20,4 +20,6 @@ public interface ProjectRepository extends JpaRepository<Project, Long>, Project
 
     @Query(value = "SELECT * FROM project WHERE leader_id = :userId", nativeQuery = true)
     List<Project> findAllByLeaderId(@Param("userId") String userId);
+
+    Project findByProjectToken(String projectToken);
 }
diff --git a/src/main/java/com/seoultech/synergybe/domain/projectlike/service/ProjectLikeService.java b/src/main/java/com/seoultech/synergybe/domain/projectlike/service/ProjectLikeService.java
index 43546019..a5f263dc 100644
--- a/src/main/java/com/seoultech/synergybe/domain/projectlike/service/ProjectLikeService.java
+++ b/src/main/java/com/seoultech/synergybe/domain/projectlike/service/ProjectLikeService.java
@@ -57,8 +57,7 @@ public synchronized ProjectLike update(User user, String projectId, LikeStatus s
             Long projectLikeId = idGenerator.generateId();
             String projectLikeToken = tokenGenerator.generateToken(IdPrefix.PROJECT_LIKE);
 //            Project project = projectService.findProjectById(projectId);
-            Project project = projectRepository.findById(projectId)
-                    .orElseThrow();
+            Project project = projectRepository.findByProjectToken(projectId);
             ProjectLike projectLike = ProjectLike.builder()
                     .id(projectLikeId)
                     .projectLikeToken(projectLikeToken)
diff --git a/src/main/java/com/seoultech/synergybe/domain/projectuser/repository/ProjectUserRepository.java b/src/main/java/com/seoultech/synergybe/domain/projectuser/repository/ProjectUserRepository.java
index e51e63f8..822e59b6 100644
--- a/src/main/java/com/seoultech/synergybe/domain/projectuser/repository/ProjectUserRepository.java
+++ b/src/main/java/com/seoultech/synergybe/domain/projectuser/repository/ProjectUserRepository.java
@@ -11,7 +11,7 @@
 
 @Repository
 public interface ProjectUserRepository extends JpaRepository<ProjectUser, Long> {
-    Optional<ProjectUser> findByProjectIdAndUserId(String projectId, String userId);
+    Optional<ProjectUser> findByProjectUserTokenAndProjectUserToken(String projectId, String userId);
 
     @Query(value = "SELECT user_id FROM project_user WHERE project_id = :projectId", nativeQuery = true)
     List<String> findProjectUserIdsByProjectId(@Param("projectId") String projectId);
diff --git a/src/main/java/com/seoultech/synergybe/domain/projectuser/service/ProjectUserService.java b/src/main/java/com/seoultech/synergybe/domain/projectuser/service/ProjectUserService.java
index 549b66b9..2cce5031 100644
--- a/src/main/java/com/seoultech/synergybe/domain/projectuser/service/ProjectUserService.java
+++ b/src/main/java/com/seoultech/synergybe/domain/projectuser/service/ProjectUserService.java
@@ -27,7 +27,7 @@ public class ProjectUserService {
     private final ProjectRepository projectRepository;
 
     public void createProjectUser(Project project, User user) {
-        Optional<ProjectUser> projectUserOptional = projectUserRepository.findByProjectIdAndUserId(project.getProjectToken(), user.getUserToken());
+        Optional<ProjectUser> projectUserOptional = projectUserRepository.findByProjectUserTokenAndProjectUserToken(project.getProjectToken(), user.getUserToken());
 
         if (projectUserOptional.isPresent()) {
             // 이미 생성됨
@@ -51,7 +51,7 @@ public List<String> getProjectUserIds(String projectId) {
     }
 
     public void deleteProjectUser(Project project, User user) {
-        Optional<ProjectUser> projectUserOptional = projectUserRepository.findByProjectIdAndUserId(project.getProjectToken(), user.getUserToken());
+        Optional<ProjectUser> projectUserOptional = projectUserRepository.findByProjectUserTokenAndProjectUserToken(project.getProjectToken(), user.getUserToken());
 
         if (projectUserOptional.isPresent()) {
             projectUserRepository.delete(projectUserOptional.get());
diff --git a/src/main/java/com/seoultech/synergybe/domain/schedule/repository/ScheduleRepository.java b/src/main/java/com/seoultech/synergybe/domain/schedule/repository/ScheduleRepository.java
index d5cc2760..9abb1558 100644
--- a/src/main/java/com/seoultech/synergybe/domain/schedule/repository/ScheduleRepository.java
+++ b/src/main/java/com/seoultech/synergybe/domain/schedule/repository/ScheduleRepository.java
@@ -5,4 +5,5 @@
 
 public interface ScheduleRepository extends JpaRepository<Schedule, Long> {
 
+    Schedule findByScheduleToken(String scheduleToken);
 }
diff --git a/src/main/java/com/seoultech/synergybe/domain/schedule/service/ScheduleService.java b/src/main/java/com/seoultech/synergybe/domain/schedule/service/ScheduleService.java
index 2f567635..e6ac3df3 100644
--- a/src/main/java/com/seoultech/synergybe/domain/schedule/service/ScheduleService.java
+++ b/src/main/java/com/seoultech/synergybe/domain/schedule/service/ScheduleService.java
@@ -43,9 +43,8 @@ public void updateSchedule(CreateScheduleRequest request, String scheduleId) {
         scheduleRepository.save(schedule);
     }
 
-    private Schedule findScheduleById(String scheduleId) {
-        return scheduleRepository.findById(scheduleId)
-                .orElseThrow(() -> new ScheduleNotFoundException("존재하지 않는 일정입니다."));
+    private Schedule findScheduleById(String scheduleToken) {
+        return scheduleRepository.findByScheduleToken(scheduleToken);
     }
 
     public void deleteSchedule(String scheduleId) {
diff --git a/src/main/java/com/seoultech/synergybe/domain/ticket/repository/TicketRepository.java b/src/main/java/com/seoultech/synergybe/domain/ticket/repository/TicketRepository.java
index b1be014e..0375e003 100644
--- a/src/main/java/com/seoultech/synergybe/domain/ticket/repository/TicketRepository.java
+++ b/src/main/java/com/seoultech/synergybe/domain/ticket/repository/TicketRepository.java
@@ -37,4 +37,6 @@ public interface TicketRepository extends JpaRepository<Ticket, Long> {
             + "FROM ticket " +
             "WHERE status = UPPER(:status) AND project_id = :projectId", nativeQuery = true)
     Integer findLastOrderNumber(@Param("status") String status, @Param("projectId") String projectId);
+
+    Ticket findByTicketToken(String ticketToken);
 }
diff --git a/src/main/java/com/seoultech/synergybe/domain/ticket/service/TicketService.java b/src/main/java/com/seoultech/synergybe/domain/ticket/service/TicketService.java
index 958612b8..18ed4fcd 100644
--- a/src/main/java/com/seoultech/synergybe/domain/ticket/service/TicketService.java
+++ b/src/main/java/com/seoultech/synergybe/domain/ticket/service/TicketService.java
@@ -91,13 +91,12 @@ public ListResponse<GetTicketResponse> getTicketList(String projectId) {
      * 이전 status의 ticket들의 orderNum이 큰 ticket에 대해 -1
      * 수정 할 status의 ticket들 중 orderNum이 큰 ticket들에 대해 +1
      */
-    public ListResponse<GetTicketResponse> changeTickets(CreateTicketRequest request, User user, String ticketId) {
+    public ListResponse<GetTicketResponse> changeTickets(CreateTicketRequest request, User user, String ticketToken) {
         // check User
         List<User> authUsers = projectService.getUserListByProject(request.projectId());
         checkUser(authUsers, user);
 
-        Ticket ticket = ticketRepository.findById(ticketId)
-                .orElseThrow(() -> new TicketNotFoundException("존재하지 않는 티켓입니다."));
+        Ticket ticket = ticketRepository.findByTicketToken(ticketToken);
 
         boolean isEqualStatus = false;
 
@@ -219,8 +218,7 @@ private TicketStatus checkStatus(String status) {
     }
 
     public GetTicketResponse deleteTicket(String ticketId, User user) {
-        Ticket ticket = ticketRepository.findById(ticketId)
-                .orElseThrow(() -> new TicketNotFoundException("존재하지 않는 티켓입니다."));
+        Ticket ticket = ticketRepository.findByTicketToken(ticketId);
 
         // check User
         List<User> authUsers = projectService.getUserListByProject(ticket.getProject().getProjectToken());
@@ -233,8 +231,8 @@ public GetTicketResponse deleteTicket(String ticketId, User user) {
     }
 
     public void updateTicket(CreateTicketRequest request, User user, String ticketId) {
-        Ticket ticket = ticketRepository.findById(ticketId)
-                .orElseThrow(() -> new TicketNotFoundException("존재하지 않는 티켓입니다."));
+        Ticket ticket = ticketRepository.findByTicketToken(ticketId);
+
         // check User
         List<User> authUsers = projectService.getUserListByProject(ticket.getProject().getProjectToken());
         checkUser(authUsers, user);
diff --git a/src/main/java/com/seoultech/synergybe/domain/ticketUser/repository/TicketUserRepository.java b/src/main/java/com/seoultech/synergybe/domain/ticketUser/repository/TicketUserRepository.java
index 12077cf3..7149e1e7 100644
--- a/src/main/java/com/seoultech/synergybe/domain/ticketUser/repository/TicketUserRepository.java
+++ b/src/main/java/com/seoultech/synergybe/domain/ticketUser/repository/TicketUserRepository.java
@@ -12,7 +12,7 @@
 
 @Repository
 public interface TicketUserRepository extends JpaRepository<TicketUser, Long> {
-    Optional<TicketUser> findByTicketIdAndUserId(String id, String userId);
+    Optional<TicketUser> findByTicketTicketTokenAndTicketUserToken(String id, String userId);
 
     @Query(value = "SELECT user_id FROM ticket_user WHERE ticket_id = :ticketId", nativeQuery = true)
     List<String> findTicketUserIdsByTicketId(@Param("ticketId") String ticketId);
diff --git a/src/main/java/com/seoultech/synergybe/domain/ticketUser/service/TicketUserService.java b/src/main/java/com/seoultech/synergybe/domain/ticketUser/service/TicketUserService.java
index 73494a6a..f76d2c48 100644
--- a/src/main/java/com/seoultech/synergybe/domain/ticketUser/service/TicketUserService.java
+++ b/src/main/java/com/seoultech/synergybe/domain/ticketUser/service/TicketUserService.java
@@ -21,7 +21,7 @@ public class TicketUserService {
     private final TokenGenerator tokenGenerator;
 
     public void createTicketUser(Ticket ticket, User user) {
-        Optional<TicketUser> ticketUserOptional = ticketUserRepository.findByTicketIdAndUserId(ticket.getTicketToken(), user.getUserToken());
+        Optional<TicketUser> ticketUserOptional = ticketUserRepository.findByTicketTicketTokenAndTicketUserToken(ticket.getTicketToken(), user.getUserToken());
 
         if (ticketUserOptional.isPresent()) {
             // 이미 생성됨
diff --git a/src/main/java/com/seoultech/synergybe/domain/user/IdTest.java b/src/main/java/com/seoultech/synergybe/domain/user/IdTest.java
new file mode 100644
index 00000000..01d4eedf
--- /dev/null
+++ b/src/main/java/com/seoultech/synergybe/domain/user/IdTest.java
@@ -0,0 +1,23 @@
+package com.seoultech.synergybe.domain.user;
+
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import lombok.Builder;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+
+@Entity
+@Getter
+@NoArgsConstructor
+public class IdTest {
+    @Id
+    private Long id;
+
+    private String text;
+
+    @Builder
+    public IdTest(Long id, String text) {
+        this.id = id;
+        this.text = text;
+    }
+}
diff --git a/src/main/java/com/seoultech/synergybe/domain/user/IdTestRepository.java b/src/main/java/com/seoultech/synergybe/domain/user/IdTestRepository.java
new file mode 100644
index 00000000..8341d5f2
--- /dev/null
+++ b/src/main/java/com/seoultech/synergybe/domain/user/IdTestRepository.java
@@ -0,0 +1,8 @@
+package com.seoultech.synergybe.domain.user;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface IdTestRepository extends JpaRepository<IdTest, Long> {
+}
diff --git a/src/main/java/com/seoultech/synergybe/domain/user/UUIDTest.java b/src/main/java/com/seoultech/synergybe/domain/user/UUIDTest.java
new file mode 100644
index 00000000..88cc7ce5
--- /dev/null
+++ b/src/main/java/com/seoultech/synergybe/domain/user/UUIDTest.java
@@ -0,0 +1,23 @@
+package com.seoultech.synergybe.domain.user;
+
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import lombok.Builder;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+
+@Entity
+@Getter
+@NoArgsConstructor
+public class UUIDTest {
+    @Id
+    private String id;
+
+    private String text;
+
+    @Builder
+    public UUIDTest(String id, String text) {
+        this.id = id;
+        this.text = text;
+    }
+}
diff --git a/src/main/java/com/seoultech/synergybe/domain/user/UUIDTestRepository.java b/src/main/java/com/seoultech/synergybe/domain/user/UUIDTestRepository.java
new file mode 100644
index 00000000..35f18828
--- /dev/null
+++ b/src/main/java/com/seoultech/synergybe/domain/user/UUIDTestRepository.java
@@ -0,0 +1,8 @@
+package com.seoultech.synergybe.domain.user;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface UUIDTestRepository extends JpaRepository<UUIDTest, String> {
+}
diff --git a/src/test/java/com/seoultech/synergybe/domain/common/generator/TokenGeneratorUUIDTest.java b/src/test/java/com/seoultech/synergybe/domain/common/generator/TokenGeneratorUUIDTest.java
index f6f5fe6c..4f2f8a8a 100644
--- a/src/test/java/com/seoultech/synergybe/domain/common/generator/TokenGeneratorUUIDTest.java
+++ b/src/test/java/com/seoultech/synergybe/domain/common/generator/TokenGeneratorUUIDTest.java
@@ -1,9 +1,13 @@
 package com.seoultech.synergybe.domain.common.generator;
 
+import org.junit.jupiter.api.DisplayName;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import static org.assertj.core.api.Assertions.assertThat;
 
 @SpringBootTest
@@ -11,19 +15,48 @@ public class TokenGeneratorUUIDTest {
     @Autowired
     IdGenerator idGenerator;
 
+    @Autowired
+    TokenGenerator tokenGenerator;
+
     @Test
-    void generateUUID() {
-//        List<String> list = new ArrayList<>();
+    void generateLongId() {
+        List<Long> longList = new ArrayList<>();
+
+        // test start
+        long startTime = System.currentTimeMillis();
+
+        for (int i = 0; i < 10000; i++) {
+            Long longId = idGenerator.generateId();
+            System.out.println("longId : " + i + " 번째 : "+ longId);
+            longList.add(longId);
 
-        for (int i = 0; i < 100; i++) {
-            Long postId = idGenerator.generateId();
-            System.out.println("postId : " + i + " 번째 : "+ postId);
-//            list.add(postId);
         }
 
+        // test end
+        long endTime = System.currentTimeMillis();
+        System.out.println("longId Total execution time: " + (endTime - startTime) + " milliseconds");
+
+        assertThat(longList.size()).isEqualTo(10000);
+    }
+
+    @Test
+    void generateStringId() {
+        List<String> stringList = new ArrayList<>();
+
+        // test start
+        long startTime = System.currentTimeMillis();
+
+        for (int i = 0; i < 10000; i++) {
+            String stringId = tokenGenerator.generateToken(IdPrefix.POST);
+            System.out.println("stringId : " + i + " 번째 : "+ stringId);
+            stringList.add(stringId);
+        }
 
+        // test end
+        long endTime = System.currentTimeMillis();
+        System.out.println("stringId Total execution time: " + (endTime - startTime) + " milliseconds");
 
-//        assertThat()
+        assertThat(stringList.size()).isEqualTo(10000);
     }
 
 
diff --git a/src/test/java/com/seoultech/synergybe/domain/idtest/IdGenerateTest.java b/src/test/java/com/seoultech/synergybe/domain/idtest/IdGenerateTest.java
new file mode 100644
index 00000000..742ee10f
--- /dev/null
+++ b/src/test/java/com/seoultech/synergybe/domain/idtest/IdGenerateTest.java
@@ -0,0 +1,88 @@
+package com.seoultech.synergybe.domain.idtest;
+
+import com.seoultech.synergybe.domain.common.generator.IdGenerator;
+import com.seoultech.synergybe.domain.common.generator.IdPrefix;
+import com.seoultech.synergybe.domain.common.generator.TokenGenerator;
+import com.seoultech.synergybe.domain.user.IdTest;
+import com.seoultech.synergybe.domain.user.IdTestRepository;
+import com.seoultech.synergybe.domain.user.UUIDTest;
+import com.seoultech.synergybe.domain.user.UUIDTestRepository;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@SpringBootTest
+public class IdGenerateTest {
+    @Autowired
+    IdGenerator idGenerator;
+
+    @Autowired
+    TokenGenerator tokenGenerator;
+
+    @Autowired
+    IdTestRepository idTestRepository;
+
+    @Autowired
+    UUIDTestRepository uuidTestRepository;
+
+    @Test
+    void generateLongId() {
+        // test start
+        long startTime = System.currentTimeMillis();
+
+
+
+        for (int j = 0; j < 100; j++) {
+            List<IdTest> idTestList = new ArrayList<>();
+
+            for (int i = 0; i < 10000; i++) {
+                Long id = idGenerator.generateId();
+                IdTest idTest = IdTest.builder()
+                        .id(id)
+                        .text("text")
+                        .build();
+
+                idTestList.add(idTest);
+            }
+            System.out.println("longId : " + j + " 번째 : ");
+            idTestRepository.saveAll(idTestList);
+        }
+
+        // test end
+        long endTime = System.currentTimeMillis();
+        System.out.println("longId Total execution time: " + (endTime - startTime) + " milliseconds");
+
+    }
+
+    @Test
+    void generateStringId() {
+        // test start
+        long startTime = System.currentTimeMillis();
+
+
+
+        for (int j = 0; j < 100; j++) {
+            List<UUIDTest> uuidTestList = new ArrayList<>();
+
+            for (int i = 0; i < 10000; i++) {
+                String id = tokenGenerator.generateToken(IdPrefix.POST_LIKE);
+                UUIDTest idTest = UUIDTest.builder()
+                        .id(id)
+                        .text("text")
+                        .build();
+
+                uuidTestList.add(idTest);
+            }
+            System.out.println("StringId : " + j + " 번째 : ");
+            uuidTestRepository.saveAll(uuidTestList);
+        }
+
+        // test end
+        long endTime = System.currentTimeMillis();
+        System.out.println("StringId Total execution time: " + (endTime - startTime) + " milliseconds");
+
+    }
+}
diff --git a/src/test/java/com/seoultech/synergybe/domain/post/PostGeneratorTest.java b/src/test/java/com/seoultech/synergybe/domain/post/PostGeneratorTest.java
index db2a5b44..b321dfb3 100644
--- a/src/test/java/com/seoultech/synergybe/domain/post/PostGeneratorTest.java
+++ b/src/test/java/com/seoultech/synergybe/domain/post/PostGeneratorTest.java
@@ -43,6 +43,7 @@ void generatePost() {
 
         User user = User.builder()
                 .id(userId)
+                .userToken(userToken)
                 .password("3e4r5t6y6y7u")
                 .passwordEncoder(passwordEncoder)
                 .email("email@email.com")