JAVA
01. JAVA Builder Pattern
- 생성 패턴 중 하나
- 불필요한 코드의 양을 줄여 줌
- Setter 메소드가 없는 인스턴스를 생성하여 변경 불가능하게 하는데 용이하다 (변경가능성 최소화)
- 유연성 확보 가능 (변수가 새로 추가됐을 경우)
- 변수의 개수와 변경 가능성을 중점적으로 보고 빌더 패턴을 적용하면 된다
- 필수적인 멤버 변수와 선택적인 멤버 변수를 효과적으로 구분할 수 있음
02. Java Assertion
- private 메소드에서 사용함
- 선행 조건의 의미가 아닌 테스트용 코드 (확신하는 값의 점검 용)
- 코드 실행 전 사전 조건 점검 or 코드 실행 후 사후 조건 점검
- assert가 참인 경우 아래 코드 실행, assert가 거짓인 경우 Exception 처리 됨
- 실행 시 VM Option에 -ea를 붙여줘야 assert 구문이 실행 됨
- 운영에서는 해당 assert 구문이 실행되지 않을 수 있음!! (옵션에 따라 다르지만 대게 실행되지 않음)
- 운영에서 예외를 처리하려면.. Exception으로 받아 로그를 남기는게 더 운영 관점에서는 오류 찾기가 수월할지도..
03. ORM(Object-Relational Mapping) 과 JPA
- ORM
- class와 rdb를 매핑한다는 뜻이며, 기술적으로는 애플리케이션의 객체를 RDB 테이블에 자동으로 영속화 해주는 것
- 다시 말해 객체와 데이터 관계의 설정
- SQL 쿼리가 아닌 method를 통한 DB 조작이 가능해진다
- 객체지향적인 코드 작성이 가능해진다
- 프로젝트 규모가 크고 복잡하여 설계가 잘못된 경우는 속도에 영향이 갈 수도 있다
04. TDD (Test Driven Developer)
- 테스트가 주도하는 개발
- 실패하는 테스트코드 작성 -> 테스트가 성공하는 프로덕션코드 작성 -> 테스트가 성공하면 프로덕션 코드를 리팩토링
- 한번에 한가지만 검증하기
- spring boot 테스트
- MockMvc
- MockMvc는 웹 어플리케이션을 애플리케이션 서버에 배포하지 않고 테스트용 MVC환경을 만들어 요청 및 전송, 응답기능을 제공해주는 유틸리티 클래스
- 컨트롤러를 테스트 하고 싶을 때 사용
- @Mock
- 테스트 시 실제 객체를 생성할때 의존성이 복잡하게 얽혀있는 경우 가짜 객체를 생성하는 방식
- given-when-then 패턴이란 1개의 단위 테스트를 3가지 단계로 나누어 처리하는 패턴
- @SpringBootTest
- 통합테스트
- Maven 빌드 시 junit 제외하기
- clean install -Dmaven.test.skip=true
- @DataJpaTest