본문 바로가기

Spring boot

Spring 끄적끄적(5) @Transactional , Stream

반응형

@Transactional ( readOnly = true) 쓰면 장점

@Transactional(readOnly = true)
  • 이 어노테이션이 붙은 메소드는 조회용 메소드라고 명시적으로 나타내주며 코드의 가독성을 높여준다
  • JPA의 영속성 컨텍스트(Persistence Context)는 Entity 조회 시 초기 상태에 대한 Snapshot을 저장한다
    • 하지만 위 어노테이션을 붙여주면 JPA는 해당 트랜잭션 내에서 조회하는 Entity는 조회용임을 인지하고 변경 감지를 위한 Snapshot을 따로 보관하지 않으므로 메모리가 절약되는 성능상 이점이 있다

List 를 Stream으로 작성해야 하는이유

public List<PersonalityTestDTO> getPersonalityList() {
        List<PersonalityTest> list = personalityTestRepository.findAll();
        List<PersonalityTestDTO> personalityTestDTOList = new ArrayList<>();
        for(PersonalityTest temp : list) {
            personalityTestDTOList.add(PersonalityTestDTO.toDTO(temp));
        }
        return personalityTestDTOList;
    }

 

public List<RacingWinnersDTO> getWinnerList(Long eventId) {
        return racingWinnerRepository.findByEventId(eventId).stream()
                .map(RacingWinnersDTO::toDTO)
                .collect(Collectors.toList());
    }

 

위 코드가 List로 작성 한 것, 아래가 stream을 이용해서 작성 한 코드이다.

Stream() 으로. 작성했을 때의 장점 !! 

  • 코드 가독성
  • 불필요한 변수 선언 제외
  • JAVA 8 이후 표현에 걸맞는 형식!! (트렌디함 ㅋㅋ)
반응형

'Spring boot' 카테고리의 다른 글

Spring Redis 분산 락 사용법  (0) 2024.08.05
Spring Data JPA Illegal attempt to set lock mode for a native query  (0) 2024.08.04
쿠키,세션,토큰,JWT  (0) 2024.07.31
@NotNull vs @NotEmpty  (0) 2024.07.29
@ModelAttribute vs @RequestBody  (0) 2024.07.28