[250318] TIL

였늘 ν•œ 일

νŠΈλžœμ μ…˜ 곡뢀

  • @Transactional μ–΄λ…Έν…Œμ΄μ…˜μ„ μ‚¬μš©ν•˜μ—¬ νŠΈλžœμž­μ…˜ 처리
    • λ°μ΄ν„°λ² μ΄μŠ€ μž‘μ—…μ˜ μ›μžμ„±μ„ 보μž₯ν•˜λŠ” μ€‘μš”ν•œ μ–΄λ…Έν…Œμ΄μ…˜
    • μ„œλΉ„μŠ€ κ³„μΈ΅μ—μ„œ μ‚¬μš©ν•˜λŠ” 것이 μΌλ°˜μ μ΄λ‹€.
    • JpaRepository λ©”μ„œλ“œλ“€μ€ 이미 μ μš©λ˜μ–΄ 있음
      @Service
      @RequiredArgsConstructor
      public class UserService {
          private final UserRepository userRepository;
          private final UserLogRepository logRepository;
        
          // 쑰회만 ν•˜λŠ” λ©”μ„œλ“œλŠ” readOnly = true둜 μ΅œμ ν™”
          @Transactional(readOnly = true)
          public UserDto getUserInfo(int userId) {
              return userRepository.findById(userId)
                  .map(UserDto::from)
                  .orElseThrow(() -> new RuntimeException("μ‚¬μš©μž μ—†μŒ"));
          }
        
          // 데이터λ₯Ό μˆ˜μ •ν•˜λŠ” λ©”μ„œλ“œλŠ” 일반 νŠΈλžœμž­μ…˜ μ‚¬μš©
          @Transactional
          public void updateUser(int userId, UserUpdateDto dto) {
              User user = userRepository.findById(userId)
                  .orElseThrow(() -> new RuntimeException("μ‚¬μš©μž μ—†μŒ"));
                    
              // 이 λͺ¨λ“  μž‘μ—…μ΄ ν•˜λ‚˜μ˜ νŠΈλžœμž­μ…˜μœΌλ‘œ 처리됨
              user.updateProfile(dto.getProfile());
              user.updateNickname(dto.getNickname());
              logRepository.save(new UserLog(userId, "μ‚¬μš©μž 정보 μ—…λ°μ΄νŠΈ"));
                
              // λ©”μ„œλ“œκ°€ μ •μƒμ μœΌλ‘œ μ’…λ£Œλ˜λ©΄ 컀밋
              // μ˜ˆμ™Έκ°€ λ°œμƒν•˜λ©΄ λ‘€λ°±
          }
      }
    

    ## μŠ€ν”„λ§ λΆ€νŠΈ μ½”λ“œ μž‘μ—…

    • user κ΄€λ ¨ CRUD API μž‘μ„±

Categories:

Updated:

Leave a comment