우아한 테크캠프 PRO 3기 - JPA
2주차 미션은 JPA 였습니다. JPA에 대해서는 실무에서 다뤄본 경험은 없지만, 인프런 김영한님 강의를 통해 개념을 익히고 토이프로젝트를 통해 경험한 바는 있었습니다.
1단계 - 엔티티 매핑
https://github.com/next-step/jwp-qna/pull/193
1) @EnableJpaAuditing의 사용
엔티티를 새로 생성하거나 변경이 되었을 때 이를 감지하여 필드에 자동으로 주입
생성일자, 수정일자와 같이 공통적으로 많은 엔티티 필드에 적용됨으로, 추상클래스에 선언하여 (@MappedSuperclass) 상속받아 사용하고는 함
https://leo0842.github.io/spring/date-auto-create/
2) @DirtiesContext의 사용
스프링부트 테스트 환경에서 Bean을 관리하는 Application Context는 한번 구동되면 테스트가 종료될 때까지 전체 테스트에서 재사용하게 된다.
하지만, 테스트를 하다보면 테스트 메서드마다 Application Context를 초기화할 필요가 생긴다. 이럴 때 사용하는게 @DirtiesContext 다.
이 어노테이션을 사용하면 클래스/메서드 단위로 테스트마다 Application Context를 초기화 할 수 있다.
3) setup의 사용
beforeEach(setup) 등을 사용할 때의 문제점
https://jojoldu.tistory.com/611
해당 파일 (클래스) 안에서 테스트가 결합되어 버린다. setup 내부의 코드를 수정하면 모든 테스트 코드에 영향을 미친다.
테스트 코드를 확인하기 위해서는 setup 내부를 확인해야 한다. 테스트 메서드는 그 하나로 완전한 프로그램이 되어야 한다.
2단계 - 연관관계 매핑
https://github.com/next-step/jwp-qna/pull/199
1) 엔티티간 참조 방향에 대한 설정
Question에서 Answers를 참조할 일이 많다. Answers에서는 Question을 참조할 일이 거의 없다. 불필요한 참조 관계는 설정하지 않는다.
3단계 - 질문삭제하기 리팩터링
https://github.com/next-step/jwp-qna/pull/228
댓글남기기