본문 바로가기

분류 전체보기73

템플릿 메소드 패턴 사실이 아니라 공부한 내용과 생각을 정리한 글입니다. 언제든 가르침을 주신다면 감사하겠습니다. 해당 글은 김영한 님의 인프런 강의 스프링 핵심 원리 - 고급 편 을 학습하며 정리한 내용입니다. https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B3%A0%EA%B8%89%ED%8E%B8/dashboard 스프링 핵심 원리 - 고급편 - 인프런 | 강의 스프링의 핵심 원리와 고급 기술들을 깊이있게 학습하고, 스프링을 자신있게 사용할 수 있습니다., - 강의 소개 | 인프런... www.inflearn.com 1. 해결하고자 하는 문제 템플릿 메서드 패턴이 해결하고자 하는 문제는.. 2022. 4. 18.
Spring logging 동시성 사실이 아니라 공부한 내용과 생각을 정리한 글입니다. 언제든 가르침을 주신다면 감사하겠습니다. 모니터링을 위해 로깅은 필수적이다. spring에서는 @SLF4J를 사용하면 알아서 적절한 로그 구현체를 찾아준다. 회사에서 요구사항을 구현할 때에도 @SLF4J와 log.info(~~~)를 사용하여 로그를 남기고 장애 발생 시 모니터링 정보로 활용하고 있다. 습관적으로 로그를 남기다가 문득 아래와 같은 생각이 들었다. 로깅은 결국 File write(콘솔 출력이 아니라 별도의 파일에 남기는 것을 가정) 우리의 WAS 는 멀티스레드 환경 트래픽이 몰릴 때 로깅 코드에 동시에 수많은 스레드가 접근하여 로그를 찍을 것임 이때 로그 파일 순서 관련해서 동시성 문제가 발생할 법 함 근데 나는 로그 파일 보면서 로그 파.. 2022. 4. 16.
Data Transfer Object 의 필요성 사실이 아니라 공부한 내용과 생각을 정리한 글입니다. 언제든 가르침을 주신다면 감사하겠습니다. 1. DTO 만들자 VS DTO 만들지 말자 최근 API 개발을 하면서 DTO 가 꼭 필요하다 vs DTO를 꼭 만들어야만 하냐 사이에서 작은 논쟁이 있었습니다. DTO 를 만들 필요가 없다는 분들의 주장은 아래와 같았습니다. 굳이 별도의 객체를 하나 더 만들어야 하기 때문에 관리 포인트가 증가한다. DTO의 수가 늘어날수록 DTO Entity 메핑 코드가 불필요하게 반복되고 Entity 만 있을 때 보다 메모리를 불필요하게 많이 차지한다. 습관적으로 DTO를 만들어 왔었을 뿐 왜 DTO를 만들어야만 하는지 깊게 고민해 보지 않았기 때문에 DTO의 필요성에 대해 확실하게 반론하지 못하는 스스로를 발견하게 되어 .. 2022. 4. 12.
[Mybatis] 일대다 테이블 조회시 페이징과 N+1 Select 문제 해결 과정 사실이 아니라 공부한 내용과 생각을 정리한 글입니다. 언제든 가르침을 주신다면 감사하겠습니다. 예시를 위한 도메인은 간단한 결재 시스템입니다. 아래와 같은 1:N 관계의 테이블이 있다고 가정합니다. 예를 들어, 신청자가 휴가 신청을 올릴 때 팀장, 본부장, 사장 순으로 결재권자를 지정할 수 있습니다. 그렇게 지정 후 신청 버튼을 클릭하면 신청 table에 row 한건이 추가되고 승인자 table에는 그 신청건에서 지정한 승인자 3명의 정보가 추가됩니다. apply_id는 하나의 신청 건에 대한 unique key이고 approver_id는 하나의 승인 정보에 대한 unique key이며, 신청 테이블: 승인 테이블 = 1:N 관계이고 외래 키는 apply_id입니다. 객체로 모델링하면 아래와 같습니다. .. 2022. 3. 22.