Skip to content

Commit

Permalink
Feat: @transactional 기본값 통일 (#187)
Browse files Browse the repository at this point in the history
#175 - refactor: @transactional 의 클래스 범위 기본 적용을 변경 (#187)
  • Loading branch information
morenow98 authored Mar 9, 2024
1 parent 30d3291 commit 10cd919
Show file tree
Hide file tree
Showing 5 changed files with 23 additions and 26 deletions.
12 changes: 6 additions & 6 deletions src/main/java/cotato/bookitlist/auth/service/AuthService.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
import org.springframework.transaction.annotation.Transactional;

@Service
@Transactional
@RequiredArgsConstructor
public class AuthService {

Expand All @@ -38,7 +37,7 @@ public ReissueResponse tokenReissue(ReissueRequest reissueRequest) {
throw new IllegalArgumentException("잘못된 Refresh Token 입니다.");
}

String newAccessToken = jwtTokenProvider.generateAccessToken(refreshMemberId, "USER"); // TODO: Role 추가해야 함!!
String newAccessToken = jwtTokenProvider.generateAccessToken(refreshMemberId, "USER");
String newRefreshToken = jwtTokenProvider.generateRefreshToken(refreshMemberId);

RefreshTokenEntity newRefreshTokenEntity = RefreshTokenEntity.builder()
Expand All @@ -51,6 +50,10 @@ public ReissueResponse tokenReissue(ReissueRequest reissueRequest) {
return ReissueResponse.from(newAccessToken, newRefreshTokenEntity.getRefreshToken());
}

private void deleteRefreshTokenOfMember(Long memberId) {
refreshTokenRepository.findById(memberId).ifPresent(refreshTokenRepository::delete);
}

public RefreshTokenEntity saveRefreshToken(Long id, String refreshToken) {

return refreshTokenRepository.save(RefreshTokenEntity.builder()
Expand Down Expand Up @@ -83,14 +86,11 @@ private void deleteRefreshToken(String refreshToken) {
refreshTokenRepository.delete(refreshTokenEntity);
}

private void deleteRefreshTokenOfMember(Long memberId) {
refreshTokenRepository.findById(memberId).ifPresent(refreshTokenRepository::delete);
}

public boolean isBlocked(String accessToken) {
return blackListRepository.findById(accessToken).isPresent();
}

@Transactional(readOnly = true)
public void validateRegisteredMember(Long memberId) {
if (!memberRepository.existsById(memberId)) {
throw new EntityNotFoundException("유저 정보를 찾을 수 없습니다.");
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/cotato/bookitlist/config/RedisConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,9 @@ public RedisTemplate<String, Object> redisTemplate() {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(redisConnectionFactory());
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
return redisTemplate;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
import org.springframework.web.multipart.MultipartFile;

@Service
@Transactional
@Transactional(readOnly = true)
@RequiredArgsConstructor
public class MemberService {

Expand All @@ -37,7 +37,7 @@ public MemberDto getMemberInfo(Long memberId, Long loginMemberId) {
return MemberDto.from(member, loginMemberId);
}


@Transactional
public String uploadProfile(MultipartFile profile, Long memberId) {
Member member = memberRepository.getReferenceById(memberId);

Expand All @@ -46,17 +46,18 @@ public String uploadProfile(MultipartFile profile, Long memberId) {
return member.updateProfileLink(url);
}

@Transactional
public void changeProfileStatus(Long memberId) {
Member member = memberRepository.getReferenceById(memberId);
member.changeProfileStatus();
}

@Transactional
public void changeName(String name, Long memberId) {
Member member = memberRepository.getReferenceById(memberId);
member.changeName(name);
}


public MemberRecommendListResponse getNewMembers() {
Pageable pageable = PageRequest.of(0, recommendCount, Sort.by("createdAt").descending());

Expand Down
14 changes: 6 additions & 8 deletions src/main/java/cotato/bookitlist/post/service/PostService.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
import org.springframework.transaction.annotation.Transactional;

@Service
@Transactional
@Transactional(readOnly = true)
@RequiredArgsConstructor
public class PostService {

Expand All @@ -36,6 +36,7 @@ public class PostService {
private final MemberRepository memberRepository;
private final BookRepository bookRepository;

@Transactional
public Long registerPost(PostRegisterRequest request, Long memberId) {
Member member = memberRepository.getReferenceById(memberId);

Expand All @@ -52,6 +53,7 @@ public Long registerPost(PostRegisterRequest request, Long memberId) {
return postRepository.save(post).getId();
}

@Transactional
public void updatePost(Long postId, PostUpdateRequest request, Long memberId) {
Member member = memberRepository.getReferenceById(memberId);

Expand All @@ -61,53 +63,48 @@ public void updatePost(Long postId, PostUpdateRequest request, Long memberId) {
post.updatePost(member, request.title(), request.content(), request.status());
}

@Transactional(readOnly = true)
public PostDetailDto getPost(Long postId, Long memberId) {
return postRepository.findPostDetailByPostId(postId, memberId)
.orElseThrow(() -> new EntityNotFoundException("게시글을 찾을 수 없습니다."));
}

@Transactional(readOnly = true)
public PostListResponse getAllPost(Pageable pageable, Long memberId) {
return PostListResponse.from(postRepository.findPublicPostAll(pageable), memberId);
}

@Transactional(readOnly = true)
public PostListResponse searchPost(String isbn13, Long memberId, Long loginMemberId, Pageable pageable) {
return PostListResponse.fromDto(
postRepository.findPublicPostWithLikedByIsbn13(isbn13, memberId, loginMemberId, pageable),
loginMemberId
);
}

@Transactional(readOnly = true)
public PostCountResponse getPostCount(String isbn13) {
return PostCountResponse.of(postRepository.countPublicPostByBook_Isbn13(isbn13));
}

@Transactional
public void increaseViewCount(Long postId) {
Post post = postRepository.getReferenceById(postId);
post.increaseViewCount();
}

@Transactional
public void deletePost(Long postId, Long memberId) {
Post post = postRepository.findByIdAndMemberId(postId, memberId)
.orElseThrow(() -> new EntityNotFoundException("게시글을 찾을 수 없습니다."));

post.deletePost();
}

@Transactional(readOnly = true)
public PostListResponse searchLikePost(Long memberId, Pageable pageable) {
return PostListResponse.fromDto(postRepository.findLikePostByMemberId(memberId, pageable), memberId);
}

@Transactional(readOnly = true)
public PostListResponse getMyPosts(Long memberId, Pageable pageable) {
return PostListResponse.from(postRepository.findByMemberId(memberId, pageable), memberId);
}

@Transactional(readOnly = true)
public PostListResponse getRecommendPosts(RecommendType recommendType, int start, Long memberId) {
return switch (recommendType) {
case LIKE -> getMostLikePosts(start, memberId);
Expand All @@ -129,6 +126,7 @@ public PostListResponse getNewPosts(int start, Long memberId) {
return PostListResponse.from(postPage, memberId);
}

@Transactional
public void togglePostStatus(Long postId, Long memberId) {
Post post = postRepository.findByIdAndMemberId(postId, memberId)
.orElseThrow(() -> new EntityNotFoundException("게시글을 찾을 수 없습니다."));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
import org.springframework.transaction.annotation.Transactional;

@Service
@Transactional
@Transactional(readOnly = true)
@RequiredArgsConstructor
public class ReviewService {

Expand All @@ -37,6 +37,7 @@ public class ReviewService {
private final BookRepository bookRepository;
private final ReviewRepository reviewRepository;

@Transactional
public Long registerReview(ReviewRegisterRequest request, Long memberId) {
Member member = memberRepository.getReferenceById(memberId);

Expand All @@ -53,6 +54,7 @@ public Long registerReview(ReviewRegisterRequest request, Long memberId) {
return reviewRepository.save(review).getId();
}

@Transactional
public void updateReview(Long reviewId, ReviewUpdateRequest reviewUpdateRequest, Long memberId) {
Member member = memberRepository.getReferenceById(memberId);

Expand All @@ -62,53 +64,48 @@ public void updateReview(Long reviewId, ReviewUpdateRequest reviewUpdateRequest,
review.updateReview(member, reviewUpdateRequest.content(), reviewUpdateRequest.status());
}

@Transactional(readOnly = true)
public ReviewDetailDto getReview(Long reviewId, Long memberId) {
return reviewRepository.findReviewDetailByReviewId(reviewId, memberId)
.orElseThrow(() -> new EntityNotFoundException("한줄요약을 찾을 수 없습니다."));
}

@Transactional(readOnly = true)
public ReviewListResponse getAllReview(Pageable pageable, Long memberId) {
return ReviewListResponse.from(reviewRepository.findPublicReviewAll(pageable), memberId);
}

@Transactional(readOnly = true)
public ReviewListResponse searchReview(String isbn13, Long memberId, Long loginMemberId, Pageable pageable) {
return ReviewListResponse.fromDto(
reviewRepository.findPublicReviewWithLikedByIsbn13(isbn13, memberId, loginMemberId, pageable),
loginMemberId
);
}

@Transactional(readOnly = true)
public ReviewCountResponse getReviewCount(String isbn13) {
return ReviewCountResponse.of(reviewRepository.countPublicReviewByBook_Isbn13(isbn13));
}

@Transactional
public void increaseViewCount(Long reviewId) {
Review review = reviewRepository.getReferenceById(reviewId);
review.increaseViewCount();
}

@Transactional
public void deleteReview(Long reviewId, Long memberId) {
Review review = reviewRepository.findByIdAndMemberId(reviewId, memberId)
.orElseThrow(() -> new EntityNotFoundException("한줄요약을 찾을 수 없습니다."));

review.deleteReview();
}

@Transactional(readOnly = true)
public ReviewListResponse searchLikeReview(Long memberId, Pageable pageable) {
return ReviewListResponse.fromDto(reviewRepository.findLikeReviewByMemberId(memberId, pageable), memberId);
}

@Transactional(readOnly = true)
public ReviewListResponse getMyReviews(Long memberId, Pageable pageable) {
return ReviewListResponse.from(reviewRepository.findByMemberId(memberId, pageable), memberId);
}

@Transactional(readOnly = true)
public ReviewListResponse getRecommendReviews(RecommendType type, int start, Long memberId) {
return switch (type) {
case LIKE -> getMostLikeReviews(start, memberId);
Expand Down Expand Up @@ -140,6 +137,7 @@ public ReviewSimpleResponse getBestReviewOfBook(String isbn13) {
.orElseThrow(() -> new EntityNotFoundException("한줄요약을 찾을 수 없습니다."));
}

@Transactional
public void toggleReviewStatus(Long reviewId, Long memberId) {
Review review = reviewRepository.findByIdAndMemberId(reviewId, memberId)
.orElseThrow(() -> new EntityNotFoundException("한줄요약을 찾을 수 없습니다."));
Expand Down

0 comments on commit 10cd919

Please sign in to comment.