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
반응형