우아한테크코스

    Lv2 레벨로그

    Java Optional의 사용의 이점 Custom exception 활용의 이점 Spring DI(Dependency Injection, 의존관계 주입)이란 무엇인가요? DI의 방법들과 장단점에 대해 설명해주세요. 컴포넌트, 컴포넌트스캔이란 @Component와 @Controller, @Service, @Repository 차이 스프링 컨테이너 JDBC API vs 스프링 JdbcTemplate 스프링 JdbcTemplate의 장점 스프링 JdbcTemplate의 단점 ⇒ ORM이 필요한 이유 @Transactional을 이용한 트랜잭션 처리 커밋과 롤백 @Transactional과 @Transactional(readOnly = true) 차이 트랜잭션 전파 속성 ⇒ 기본 속성 외 다른 것들을 사용해본..

    Logging 전략 수립(with Logback)

    1. 상황 우아한테크코스 Lv3 3차 데모데이 필수 요구사항에 '디버깅할 수 있는 로그 파일 출력' 요구사항이 추가되었다. 따라서 로컬, 개발, 운영 서버에 맞는 각기 다른 로깅 전략이 필요했다. 2. Logging 전략 Logback vs Log4j2 Logback, Log4j2 중 어떤 로깅 프레임워크를 사용할 지 고민했다. Log4j1의 경우 2015년 8월 아파치 측에서 더이상 지원하지 않는다고 발표했기 때문에 고려하지 않았다.(https://blogs.apache.org/foundation/entry/apache_logging_services_project_announces) 팀 내에서 로깅을 경험한 사람이 없었기에, 우선은 Logback을 사용하기로 결정했다. Logback은 Spring bo..

    @Transactional과 @Transactional(readOnly = true) 차이

    서론 지하철 노선도 미션에서 리뷰어에게 다음과 같은 피드백을 받았습니다. @Transactional과 @Transactional(readOnly = true)은 어떻게 다른지, 왜 사용했는지 공유해주실 수 있나요~? 그에 대한 저의 답변입니다. @Transactional(readOnly = true)을 사용한 이유는 명령쿼리분리원칙 때문입니다. 조회 쿼리만을 사용하는 메서드에는 readOnly = true을 붙여 상태를 변경시키는 행위(생성,수정,삭제)를 금지할 수 있습니다. 또한, readOnly = true가 메서드에 붙어있다면, 다른사람이 보기에 이 메서드는 상태를 변경시키지 않는 쿼리라고 생각할테니 프로그램의 안정성에 기여할 것이라는 생각을 했었습니다. readOnly=true를 사용함으로써 얻을..

    Lv1 레벨로그

    Lv1에서 좋은 코드가 무엇인가에 대해 배웠습니다. 좋은 코드의 기준 중 하나는 유지보수가 용이한 코드라고 생각합니다. 1. MVC 구조 Model : 데이터와 관련된 부분 View : 사용자한테 보여지는 부분 Controller : Model과 View를 이어주는 부분 1) MVC 구조 설계 시 주의사항 Model은 View에 관한 코드를 가지면 안된다. 컨트롤러는 thread-safe 해야만 한다. 즉, thread-safe하지 않은 상태를 가지면 안된다. 2. if-else가 계속 반복되는 구조에 대응 1) Enum 활용 Enum은 비슷한 속성을 묶는 기능을 한다. Enum을 사용함으로써 얻는 장점 다른 사람이 봐도 비슷한 속성임을 알 수 있다. => 불필요한 문서화를 줄인다. 컴파일 단계에서 에러..