IT/자바, 스프링

데이터 검증을 스프링에서 하지 않고 db로 넘겨주기

thesse 2021. 11. 4. 15:06
300x250
반응형

 

DeviceServiceImp.java

        // 빈 채널을 찾아서 기기 등록 (빈 채널이 없으면 익셉션)
        List<Channel> channelList = channelRepository.findAllByStoreId(store.getId());
        Boolean fullDevice = true;
        
        for(Channel channel : channelList){
            if(channel.getDevice()==null){
                channel.setDevice(device);
                channelRepository.save(channel);
                fullDevice = false;
                break;
            }
        }
        if(fullDevice){
            throw new FullDeviceException();
        }

 

위처럼 구구절절 포문 돌려서 하던 로직을 db로 넘겨주기

 

 

↓↓↓

 

 

ChannelRepository.java

@Repository
public interface ChannelRepository extends JpaRepository<Channel, Integer> {
    
    ...
    Optional<Channel> findFirstByDeviceIdIsNullAndStoreId(Integer StoreId);
    
}

 

DeviceServiceImp.java

        // device 배정 안된 채널 찾기 : 스토어1개당 채널4개 --> 카메라 등록되는 순서대로 빈 채널에 등록
        Channel channel = channelRepository.findFirstByDeviceIdIsNullAndStoreId(store.getId())
                .orElseThrow(()-> new FullDeviceException());

        channel.setDevice(device);

 

이렇게 심플해졌다

 

* db에 부하가 크게 걸리는 경우 주의하여 사용

300x250
반응형