Spring FrameworkにおけるCRUDサービス実装例

新規登録処理の実装

@Service
public class UserService {

    @Autowired
    private UserRepository userRepository;

    public UserResponse registerUser(UserRequest request) {
        User entity = new User();
        // リクエストデータをエンティティに反映
        entity.setName(request.getUserName());
        entity.setEmail(request.getEmailAddress());
        userRepository.save(entity);
        return new UserResponse(entity.getId(), entity.getName());
    }
}

削除処理の実装

@Service
public class UserService {

    @Autowired
    private UserRepository userRepository;

    public void removeUser(Long userId) {
        userRepository.findById(userId).ifPresent(user -> {
            userRepository.delete(user);
        });
    }
}

更新処理の実装

@Service
public class UserService {

    @Autowired
    private UserRepository userRepository;

    public UserResponse updateUserDetails(Long id, UserRequest request) {
        return userRepository.findById(id)
            .map(user -> {
                // リクエスト内容でユーザー情報を更新
                user.setName(request.getUserName());
                user.setEmail(request.getEmailAddress());
                userRepository.save(user);
                return new UserResponse(user.getId(), user.getName());
            })
            .orElse(null);
    }
}

単一情報取得処理

@Service
public class UserService {

    @Autowired
    private UserRepository userRepository;

    public UserResponse fetchUserDetails(Long userId) {
        return userRepository.findById(userId)
            .map(UserResponse::new)
            .orElse(null);
    }
}

ページング処理の実装

@Service
public class UserService {

    @Autowired
    private UserRepository userRepository;

    public PagedResult<UserResponse> getUsers(PagedRequest request) {
        Page<User> pageResult = userRepository.findAll(request.toPageable());
        
        List<UserResponse> responseList = pageResult.getContent().stream()
            .map(UserResponse::new)
            .collect(Collectors.toList());
        
        return new PagedResult<>(
            responseList, 
            pageResult.getNumber(), 
            pageResult.getSize(),
            pageResult.getTotalElements()
        );
    }
}
@Service
public class UserService {

    @Autowired
    private UserRepository userRepository;

    public PagedResult<UserResponse> searchUsers(PaginationParams params) {
        Pageable pageable = CustomPageRequest.of(params.getPage(), params.getSize());
        Page<User> pageResult = userRepository.findAll(pageable);
        
        List<UserResponse> responseList = new ArrayList<>();
        for (User user : pageResult.getContent()) {
            responseList.add(new UserResponse(user));
        }
        
        return new PagedResult<>(
            responseList, 
            pageResult.getNumber(), 
            pageResult.getSize(),
            pageResult.getTotalElements()
        );
    }
}

タグ: Spring Boot Java crud pagination Service Layer

6月8日 17:05 投稿