티스토리 뷰
728x90
반응형
1. 데이터 베이스 접근 로직2
(1) 테스트 (이어서)
- Article과 유사하게 ArticleComment를 수정한다.
- 어노테이션을 붙여준다.
- 외래키에 대해서는 @ManyToOne(optional = false) 를 사용한다.
- protected 로 생성을 하고 public으로 불러오는 것, equals() and hashCode() 도 구현한다.
- Services 탭에서 잘 구동되는지 확인 가능하다.
- + 버튼을 누르고 run configuration type 을 누른다.
- Spring boot를 찾아 선택하여 FastCampusProjectBoardApplication을 통해 구동해볼 수 있다.
- spring 로그가 run과 분리해서 볼 수 있다.
- 여러개의 프로젝트를 관리할 때 좋다.
- 정지하고 데이터 베이스 탭에 가서 refresh를 해주면 테이블이 생성된 것을 확인할 수 있다.
- DB로부터 Entity를 생성할 수도 있다.
- JPA Structure > Article > DTOs > 우클릭 > New > dto
- 필드를 전부 선택하고, ok -> ArticleDto 생성해준다.
- 이때 id는 잘 넣지 않는다.
- Intentions > multiple lines 기능을 통해 줄바꿈을 쉽게 할 수 있다.
- 양방향 바인딩
- Article에 연동되어 있는 comments를 set을 통해 한 번에 볼 수 있다.
@OneToMany(mappedBy = "article", cascade = CascadeType.ALL) // article 테이블에서 온 것을 명시
private final Set<ArticleComment> articleComments = new LinkedHashSet<>();
- 운영에 있어서는 게시글은 사라지더라도 댓글이 남았으면 좋겠기 때문에 cascade를 설정 안하기도 한다.
- @ToString 이 계속 중복 참조하는 경우를 방지하기 위해 Article 에서 comments를 확인하는 경우는 연결을 끊어준다.
- @ToString.Exclude 사용
- 테스트를 위해서
- com.fastcampus.projectboard > 우클릭 > New > Spring Data > Repository
- Entity: Article
- Package: com.fastcampus.projectboard.repository
- 같은 방법으로 ArticleComment에 대해서 생성할 수 있다.
- 생성된 Repository에서 우클릭 > New > Spring Data > Repository
- 혹은 ArticleCommentRepositiry Interface를 생성하여 JpaRepository를 만들 수 있다.
- com.fastcampus.projectboard > 우클릭 > New > Spring Data > Repository
- ctrl + shift + t 를 통해 쉽게 Test를 생성할 수 있다.
- 테스트를 하기 전, 관련 어노테이션을 추가한다.
- @DataJpaTest : 슬라이스 테스트
- @Import(JpaConfig.class) : 인식 못하는 클래스 추가
- @DisplayName("JPA 연결 테스트")
- 두 개의 Repository 를 테스트 할 것이다.
- Live Templates를 사용하면 쉽게 템플릿을 만들어서 사용할 수 있다.
- select test
- findAll을 사용하여 저장소에 있는 모든 정보를 확인해본다.
- assertThat(articles).isNotNull().hasSize(0);
- insert test
- 임의로 Article 정보를 주어주고, repository에 save(article)를 한다.
- assertTaht(articleRepository.count()).isEqualTo(previousCount+1);
- Article / ArticleComment Entity 위에 @EntityListeners(AuditingEntityListener.class)를 추가해야한다.
- updating test
- 수정이 있을 때 잘 통과되는지 체크한다.
- article 중에서 id를 하나 가져와서 hashtag를 임의로 넣어준다.
- assertThat(savedArticle).hasFieldOrPropertyWithValue("hashtag",updatedHashtag);
- delete test
- previousArticleCount, previousArticleCommentCount, deleteCommentCount 를 변수에 저장해놓고,
- articleRepository.delete(article)을 했을때, 아티클 개수는 하나만 줄고, comments 개수는 글 안의 comment 수만큼 줄었는지 확인
- assertThat(articleRepository.count()).isEqualTo(previousArticleCount -1);
- assertThat(articleCommentRepository.count()).isEqualTo(previousArticleCommentCount -deleteCommentCount);
- 테스트 데이터를 대량으로 생성해주는 사이트
- mockaroo.com을 참고하면 테스트 하는데 도움이 된다.
- 도메인을 그대로 넣고 타입 등을 설정하면 관련 데이터를 생성해준다.
- 수정사항을 GitKraken을 통해 commit을 남기고 push한다.
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
#패스트캠퍼스 #포트폴리오 #직장인자기계발 #환급챌린지 #포트폴리오챌린지 #패스트캠퍼스후기 #초격차패키지 #오공완
728x90
반응형
'Study > FastCampus' 카테고리의 다른 글
[Java Project] Part 2. 게시판 서비스 만들기 - API & 뷰 엔드포인트 (0) | 2023.08.31 |
---|---|
[Java Project] Part 2. 게시판 서비스 만들기 - 데이터베이스 접근 로직3 & API 테스트 정의 (0) | 2023.08.30 |
[Java Project] Part 2. 게시판 서비스 만들기 - 데이터베이스 접근 로직1 (0) | 2023.08.28 |
[Java Project] Part 2. 게시판 서비스 만들기 - 도메인 설계 (0) | 2023.08.27 |
[Java Project] Part 2. 게시판 서비스 만들기 - 스프링 부트 프로젝트 (0) | 2023.08.26 |
댓글