git, Java, 미션 사이클 익숙해지기else 최대한 안 쓰기요구 사항에서 불변 사항들 상수화(final) 하기하나의 기능만 하는 함수들로 분리해서 구현하기Angular Js Commit Convention메소드, 변수, 인자 등등 의도를 드러내는 네이밍기능 명세
함수 분리, 함수 별 테스트 코드 작성도메인 설계(domain, service, controller)가독성을 신경 쓴 네이밍 및 Stream API로직 별 단위 테스트1주차 미션 때 배우고, 신경 썼던 모든 부분은 그대로 유지한다.README를 상세히 작성한다.프로젝트
클래스 분리Enum 사용(에러 코드 관리, 로또 당첨 결과 관리)DTO VS VO예외 처리(throw, throws, try-catch 등)1, 2주차 미션 때 배우고, 신경 썼던 모든 부분은 그대로 유지한다.도메인 객체에서 로그성 메세지(toString()) 이외의
클래스 분리, 리팩토링Enum으로 공통된 상수나 에러 관리RuntimeException들을 던지고 어디서 try-catch할 지??객체를 단순히 저장소로 쓰지 않기(getter, setter뿐 아니라 도메인 로직 추가)테스트 작성 시 @ParameterizedTest
백엔드 1차 합격 발표를 받고 남은 3일 동안 2, 3, 4주차 과제를 혼자 다시 구현해봤다.최대 4시간으로 시간을 재고 했더니 테스트 코드를 작성하면서 모든 로직을 만들고 테스트 케이스 통과까지(리팩토링 안한 상태) 각각 1, 2, 3시간이 걸렸다.아마 4주차와 비슷
레벨 2의 자동차 미션을 진행하던 중에 Service 레이어에서 @Transational 어노테이션을 사용했다.어떤 메서드에 대해서 Atomic 하게 처리하기 위해서 사용했는데, 이때 영속 레이어의 읽기 작업만 호출할 때는 추가로 readOnly 옵션을 적용해줬다. 그
이번 미션에서 학습하면서 사용했던 Interceptor, ArgumentResolver에 대해서 다시 정리해보려고 한다.인증 등을 인터셉터로 구현하면, 컨트롤러의 책임이 줄어들고 중복 코드를 제거할 수 있다.Handler의 실행을 가로챈다.HandlerIntercept
위처럼 (DB의 PK값, 출발역, 도착역, 거리)를 가지는 경로(Path) 객체가 있다.같은 Path 끼리의 동등성을 비교해야 하는 상황이 있다.이때 처음에는 다음과 같이 생각했다.도메인 비즈니스를 수행하는 도메인 객체이지만 DB의 식별자를 가지는 엔티티이므로 ID값만
지하철 미션과 장바구니 미션에서 요금 정책에 대한 설계가 필요했다.요금 및 할인 관련은 바뀔 가능성이 높은 도메인이므로 매우 유연한 설계가 필요하다!!요금 정책이 좀 더 복잡했던 지하철 미션을 예시로 들어서 바꿔보자.우선 기존 내가 설계했던 방식은 아래와 같다.요금 정
한 세션에서 글로벌 락 획득다른 세션에서 insert문 실행이 불가능한 모습한 세션에서 네임드 락 획득다른 세션에서 “salmon” 락 얻기 대기한 세션에서 테이블 전체에 대해서 S락을 걸은 모습테이블 레벨에 IS 락도 걸린 모습 \* for share, in sh
테이블의 Row 수가 매우 커서 인덱스의 크기가 물리적인 메모리보다 훨씬 클 때데이터를 주기적으로 삭제할 때대부분의 테이블은 전체 중 일부 데이터만 활발하게 사용함. 활발한 부분과 그렇지 않는 부분을 나눠서 관리하면 상당히 효과적MySQL에서는 데이터나 인덱스를 파일
매우 간단한 예제가 있습니다.위의 메서드는 stockId를 받아서 영속 레이어에서 엔티티를 가져온 뒤, decreaseOne() 메서드를 통해서 재고를 1 감소시키는 상황입니다.테스트 코드를 살펴보겠습니다.기존에 재고 100개짜리의 Stock 엔티티를 저장해둔 상태입니