Jam's story

게시판 페이지 기능구현 1-4 본문

Spring

게시판 페이지 기능구현 1-4

애플쩀 2022. 10. 27. 10:03
JPA -  save()와 flush() 차이

save() 메소드는 바로 DB에 저장되지 않고, 영속성 컨텍스트에 저장되었다가

flush()나 commit() 수행시에 DB에 저장

 

save() 와 saveandflush() 차이점

saveAndFlush()메소드는 트랜잭션 실행에 data를 flush 한다

 

 

영속성 컨텍스트

엔티티를 영구저장하는 환경

 

 

참고: https://velog.io/@seongwon97/Spring-Boot-%EC%98%81%EC%86%8D%EC%84%B1-%EC%BB%A8%ED%85%8D%EC%8A%A4%ED%8A%B8Persistence-Context

 

 

ArticleService(Test)를 마친후, ArticleController(Test) 구현 

ArticleController
ArticleController에 ArticleService를 넣어서 정보전달을 시켜줌

 

📌질문:

//api와의 입출력만 보기위해서 articleService와의 연결을 끊어줘야 하는데 모킹을해야해서 이때 쓰는 애노테이션이 mockBean 

mock과 injectMocks를 안쓰고 mockBean과 Autowired로 쓰는 이유가 뭔가요?!?!

 

모킹

따라서 단위 테스트를 작성할 때 외부에 의존하는 부분을 임의의 가짜로 대체하는 기법이 자주 사용되는데 이를 모킹(mocking)이라고 합니다. 다시 말해, 모킹(mocking)은 외부 서비스에 의존하지 않고 독립적으로 실행이 가능한 단위 테스트를 작성하기 위해서 사용되는 테스팅 기법입니다.

@MockBean으로 @InjectMocks은 동작하지 않나요?

이제부터 @MockBean과 @Mock의 차이와 정확한 사용법에 대해 나오고 더불어 점점 헷갈려가기 시작합니다.

아래 표를 기준으로 구분해서 생각하시면 됩니다.

Mock 종류 의존성 주입 Target
@Mock @InjectMocks
@MockBean @SpringBootTest

- @Mock은 @InjectMocks에 대해서만 해당 클래스안에서 정의된 객체를 찾아서 의존성을 해결합니다.

- @MockBean은 mock 객체를 스프링 컨텍스트에 등록하는 것이기 때문에 @SpringBootTest를 통해서 Autowired에 의존성이 주입되게 됩니다.

 

https://cobbybb.tistory.com/16

 

Model, ModelMap Vs ModelAndView 차이점

  • 데이터만 저장한다 vs 데이터와 이동하고자 하는 View Page를 같이 저장한다

 

 

Model, ModelMap 공통점

  • model.addAttribute("변수명");
  • modelMap.addAttribute("변수명");
  • 둘 다 addAttribute를 사용함
  • Model or ModelMap에 데이터만 저장 후 View에서 사용목적

 

Model, ModelMap 차이점

  • Model - 인터페이스
  • ModelMap - 클래스

출처: https://javaoop.tistory.com/56 [개쿠:티스토리]

 

질문 :

ArticleController
ArticleWithCommentsResponse article = ArticleWithCommentsResponse.from(articleService.getArticle(articleId));

에서 response로 바꾸는 이유가 궁금

Comments