diff --git a/src/main/java/umc/spring/post/controller/PostController.java b/src/main/java/umc/spring/post/controller/PostController.java
index 6a06b5c996e9cc194aab1eaf4852b6f87b0ec448..00357386f21587771a8252beb9e32a433b08eb29 100644
--- a/src/main/java/umc/spring/post/controller/PostController.java
+++ b/src/main/java/umc/spring/post/controller/PostController.java
@@ -58,12 +58,23 @@ public class PostController {
     @PostMapping("/post/likes")
     @ResponseStatus(HttpStatus.OK)
     public void likeCrew(@RequestParam Long id){
-        postService.likeCrew(id);
+
+        try {
+            postService.likeCrew(id);
+        }
+        catch (Exception e){
+            throw new ResponseStatusException(HttpStatus.UNAUTHORIZED, "token not found");
+        }
     }
     @DeleteMapping ("/post/likes")
     @ResponseStatus(HttpStatus.OK)
     public void dislikeCrew(@RequestParam Long id){
-        postService.dislikeCrew(id);
+        try{
+            postService.dislikeCrew(id);
+        }
+        catch (Exception e){
+            throw new ResponseStatusException(HttpStatus.UNAUTHORIZED, "token not found");
+        }
     }
 
     @PostMapping("/post/search")
diff --git a/src/main/java/umc/spring/post/data/dto/PostResDto.java b/src/main/java/umc/spring/post/data/dto/PostResDto.java
index 48ef01fa89f5083de0cd0f76cf00652ae58d77e6..ec280370808475eca4d715ef868045053ffed55a 100644
--- a/src/main/java/umc/spring/post/data/dto/PostResDto.java
+++ b/src/main/java/umc/spring/post/data/dto/PostResDto.java
@@ -35,7 +35,7 @@ public class PostResDto {
                 .author(post.getAuthor())
                 .body(post.getBody())
                 .image(post.getImage())
-                .likeCount(post.getLikeCount())
+                .likeCount(post.getLikes().size())
                 .createdTime(post.getCreatedTime())
                 .modifiedTime(post.getModifiedTime())
                 .comments(resDtos).build();
diff --git a/src/main/java/umc/spring/post/data/entity/Like.java b/src/main/java/umc/spring/post/data/entity/Like.java
deleted file mode 100644
index 46d312a4b2dd6d40dbd97d7dccc0ba91241f3433..0000000000000000000000000000000000000000
--- a/src/main/java/umc/spring/post/data/entity/Like.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package umc.spring.post.data.entity;
-
-import jakarta.persistence.*;
-
-public class Like {
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    private Long id;
-    @ManyToOne
-    @JoinColumn(name = "user_id")
-    private Long userId;
-    @ManyToOne
-    @JoinColumn(name = "post_id")
-    private Long postId;
-}
diff --git a/src/main/java/umc/spring/post/data/entity/LikeData.java b/src/main/java/umc/spring/post/data/entity/LikeData.java
new file mode 100644
index 0000000000000000000000000000000000000000..dfe8dc5ac9ced7ed8dfb6548ed4ce5893ecd32b6
--- /dev/null
+++ b/src/main/java/umc/spring/post/data/entity/LikeData.java
@@ -0,0 +1,25 @@
+package umc.spring.post.data.entity;
+
+import jakarta.persistence.*;
+import lombok.Data;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+
+@Entity
+@Data
+@Getter
+@NoArgsConstructor
+public class LikeData {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    Long id;
+
+    @ManyToOne(fetch=FetchType.EAGER)
+    @JoinColumn(name = "postId",nullable = false)
+    Post post;
+
+    @ManyToOne(fetch=FetchType.EAGER)
+    @JoinColumn(name = "userId",nullable = false)
+    User user;
+}
diff --git a/src/main/java/umc/spring/post/data/entity/Post.java b/src/main/java/umc/spring/post/data/entity/Post.java
index 5fb5452a3f2059e18b996a47edcea589cfec75ed..323344dfbbcdfdfe147d42cb9fb9f260b4975063 100644
--- a/src/main/java/umc/spring/post/data/entity/Post.java
+++ b/src/main/java/umc/spring/post/data/entity/Post.java
@@ -46,6 +46,10 @@ public class Post{
             orphanRemoval = true)
     private List<Comment> comments = new ArrayList<>();
 
+    @OneToMany(mappedBy = "post", cascade = CascadeType.ALL,fetch = FetchType.EAGER,
+            orphanRemoval = true)
+    private List<LikeData> likes = new ArrayList<>();
+
 
 
 }
diff --git a/src/main/java/umc/spring/post/data/entity/User.java b/src/main/java/umc/spring/post/data/entity/User.java
index 18d753b28f8b151dac244b71655443287466742b..06b3d16ff78fd19e008a4136b24a6344562401df 100644
--- a/src/main/java/umc/spring/post/data/entity/User.java
+++ b/src/main/java/umc/spring/post/data/entity/User.java
@@ -11,13 +11,14 @@ import umc.spring.post.config.security.Role;
 
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.List;
 
 //@Builder
 @NoArgsConstructor
 @AllArgsConstructor
 @Entity
 @Data
-@Table(name="user")
+@Table(name="User")
 public class User implements UserDetails {
 
     @Id
@@ -37,6 +38,10 @@ public class User implements UserDetails {
     @Enumerated(EnumType.STRING)
     private Role role = Role.USER;
 
+    @OneToMany(mappedBy = "user", cascade = CascadeType.ALL,fetch = FetchType.EAGER,
+            orphanRemoval = true)
+    private List<LikeData> likes = new ArrayList<>();
+
     @Override
     public Collection<? extends GrantedAuthority> getAuthorities() {
         Collection<GrantedAuthority> authorities = new ArrayList<>();
diff --git a/src/main/java/umc/spring/post/repository/LikeRepository.java b/src/main/java/umc/spring/post/repository/LikeRepository.java
index fca6e211738475803940d8163dcea386b1a8ef38..94af2a98100a5bd848de7f3b5be0e7c472f57d15 100644
--- a/src/main/java/umc/spring/post/repository/LikeRepository.java
+++ b/src/main/java/umc/spring/post/repository/LikeRepository.java
@@ -1,7 +1,16 @@
 package umc.spring.post.repository;
 
 import org.springframework.data.jpa.repository.JpaRepository;
-import umc.spring.post.data.entity.Like;
+import umc.spring.post.data.entity.LikeData;
+import umc.spring.post.data.entity.Post;
+import umc.spring.post.data.entity.User;
 
-public interface LikeRepository extends JpaRepository<Like,Long> {
+import java.util.List;
+import java.util.Optional;
+
+public interface LikeRepository extends JpaRepository<LikeData, Long> {
+
+    Optional<LikeData> findByPostAndUser(Post post, User user);
+
+    List<LikeData> findLikeByPost(Post post);
 }
diff --git a/src/main/java/umc/spring/post/service/PostServiceImpl.java b/src/main/java/umc/spring/post/service/PostServiceImpl.java
index 4e8a47f4222685353e602647e1c497deac09cbfe..2046e97ecd83c41131d5a3578b66eb8f787015e8 100644
--- a/src/main/java/umc/spring/post/service/PostServiceImpl.java
+++ b/src/main/java/umc/spring/post/service/PostServiceImpl.java
@@ -10,9 +10,11 @@ import umc.spring.post.data.dto.PostDto;
 import umc.spring.post.data.dto.PostResDto;
 import umc.spring.post.data.dto.UserInfoDto;
 import umc.spring.post.data.entity.Comment;
+import umc.spring.post.data.entity.LikeData;
 import umc.spring.post.data.entity.Post;
 import umc.spring.post.data.entity.User;
 import umc.spring.post.repository.CommentRepository;
+import umc.spring.post.repository.LikeRepository;
 import umc.spring.post.repository.PostRepository;
 import umc.spring.post.repository.UserRepository;
 
@@ -31,11 +33,14 @@ public class PostServiceImpl implements PostService{
 
     @Autowired
     private final UserRepository userRepository;
+    @Autowired
+    private final LikeRepository likeRepository;
 
-    public PostServiceImpl(PostRepository postRepository, CommentRepository commentRepository, UserRepository userRepository) {
+    public PostServiceImpl(PostRepository postRepository, CommentRepository commentRepository, UserRepository userRepository, LikeRepository likeRepository) {
         this.postRepository = postRepository;
         this.commentRepository = commentRepository;
         this.userRepository = userRepository;
+        this.likeRepository = likeRepository;
     }
 
     @Override
@@ -120,24 +125,45 @@ public class PostServiceImpl implements PostService{
     @Override
     public void likeCrew(Long id) {
         UserInfoDto userInfoDto = getCurrentMemberId();
-
+        // 내가 좋아요를 누른적이 있는지? 있으면 반영안됨
         Post post = postRepository.findById(id).orElseThrow(() -> new RuntimeException("id가 존재하지 않습니다."));
-        int likeCount = post.getLikeCount();
-        post.setLikeCount(++likeCount);
-        postRepository.save(post);
+        User user = userRepository.findByLoginId(userInfoDto.getLoginId()).orElseThrow();
+        Optional<LikeData> byPostAndUser = likeRepository.findByPostAndUser(post, user);
+        if(byPostAndUser.isEmpty()){
+            LikeData likeData = new LikeData();
+            post.getLikes().add(likeData);
+            user.getLikes().add(likeData);
+            likeData.setUser(user);
+            likeData.setPost(post);
+            likeRepository.save(likeData);
+        }
+        else{
+            throw new ResponseStatusException(HttpStatus.UNAUTHORIZED, "이미 좋아요를 눌렀습니다.");
+        }
     }
 
     @Override
     public void dislikeCrew(Long id) {
+        UserInfoDto userInfoDto = getCurrentMemberId();
         Post post = postRepository.findById(id).orElseThrow(() -> new RuntimeException("id가 존재하지 않습니다."));
-        int likeCount = post.getLikeCount();
-        if(likeCount!=0){
-            post.setLikeCount(--likeCount);
+        User user = userRepository.findByLoginId(userInfoDto.getLoginId()).orElseThrow();
+        Optional<LikeData> byPostAndUser = likeRepository.findByPostAndUser(post, user);
+        if(byPostAndUser.isPresent()){
+            post.getLikes().removeIf(data ->
+                    data.getPost().equals(post)
+            );
             postRepository.save(post);
-        }
-    }
 
+            user.getLikes().removeIf(data ->
+                    data.getUser().equals(user)
+            );
+            userRepository.save(user);
+        }
+        else{
+            throw new ResponseStatusException(HttpStatus.UNAUTHORIZED, "좋아요를 누른 적이 없습니다");
+        }
 
+    }
 
     @Override
     public List<PostResDto> search(String title) {
@@ -206,7 +232,7 @@ public class PostServiceImpl implements PostService{
     private static void setPost(PostDto postDto, Post post) {
         post.setTitle(postDto.getTitle());
         post.setBody(postDto.getBody());
-        post.setLikeCount(postDto.getLikeCount());
+        post.setLikeCount(0);
         post.setImage(postDto.getImage());
     }
 }