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
반응형
'IT > 자바, 스프링' 카테고리의 다른 글
자바 string에서 boolean 변환하기 (0) | 2021.12.15 |
---|---|
URL Decoder (퍼센트 인코딩 되돌리기) (0) | 2021.12.06 |
UserDetails에서 User 객체 가져오기 (0) | 2021.11.03 |
Spring Security에서 컨트롤러 메서드 별 권한 지정 (@Secured, @PreAuthorize) (0) | 2021.10.22 |
쿠키 생성, 삭제 (0) | 2021.10.15 |