송파구청 특강 (2021-06 ~ 2021-07)/SpringBoot

강의9

배워도끝이없네 2021. 6. 29. 16:21

MSA를 할때는 공통으로하는애들은 따로빼주고

모듈별로묶는게 유리하다.

 

불변이라는게 왜 중요한가

코드를 만들때는 처음만들때만 값을 준다)

 

불변으로 설계하는 이유는?

Entity클래스는 가능하면 Setter를 만들지 않는다(불변을 유지하려고 해야한다)

 

대신 필요할때만 바꿀수 있게 한다.

  //테스트할때는 이 어노테이션을 붙이면 환경이 끝난다
@SpringBootTest
@ActiveProfiles("dev")
@Log4j2 //로그를 찍을때 사용
public class TodoRepositoryTests {

    @Autowired
    private TodoRepository todoRepository;

    @Test
    public void test1(){
        log.info(todoRepository.getClass().getName());
    }

    @Test
    public void testInsert(){
        IntStream.rangeClosed(1,300).forEach(i->{
            Todo todo = Todo.builder().content("내용...."+i).build();
            todoRepository.save(todo);
        });//loop
    }

    @Test
    public void testSelect(){

        //자바 8버전에 optional이라는 아이가 등장한다
        Optional<Todo> result = todoRepository.findById(1L);

//        log.info(result.get());
        // ifPresent 존재한다면이라는 의미로 ifelse를 줄여서 쓰는것
        result.ifPresent(todo->log.info(todo));
    }

    @Test
    public void testPaging(){
        //페이징을 하고싶으면 무조건 Pageable타입
        Pageable pageable = PageRequest.of(0, 10, Sort.by("tno").descending());

        //페이지를 findAll에서 가져오고싶으면 Page타입리턴을 받는다
        Page<Todo> result = todoRepository.findAll(pageable);

        result.getContent().forEach(todo->log.info(todo));
    }

    @Test
    public void testUpdate(){

        Optional<Todo> result = todoRepository.findById(300L);

        result.ifPresent(todo->{ // 셀렉트가 두번날아간다.. 왜 두번날아갈까..
            todo.changeTitle("300번 내용 수정");
            todoRepository.save(todo);
        });
    }

    @Test
    public void testDelete(){

        todoRepository.delete(Todo.builder().tno(300L).build());
    }

}

'송파구청 특강 (2021-06 ~ 2021-07) > SpringBoot' 카테고리의 다른 글

강의11  (0) 2021.06.30
강의10  (0) 2021.06.29
강의8  (0) 2021.06.29
강의7  (0) 2021.06.29
강의6  (0) 2021.06.28