java (3) 썸네일형 리스트형 Java 의존성 역전하기 - Dependency Inversion (사례를 통한 학습) 이 글은 팀원들의 적극적인 코드 리뷰 참여를 계기로 쓰게 되었다. 코드 리뷰에서 나온 사례를 통해 의존성 역전하기를 구현해보기에 앞서 이 코드 리뷰 경험은 어느 정도 각색되었음을 밝힌다. 코드 리뷰 사례에서 나를 포함해 개발자 3명이 등장하는데 편의상 A와 B라고 부르겠다. A가 아래와 비슷한 형태의 코드를 GitHub Repository에 Pull Request를 날렸다. package param; import entity.Customer; public class CustomerParam { private final String name; private final Integer age; // A가 Refactoring 하기 전에는 Customer 생성 로직이 Service Class에 존재했다. pub.. Java Thread와 Concurrency(동시성) 이해하기 동시성에 관한 Library들이 계속 발전하면서 Java가 제공하는 Low level 수준의 동시성 키워드인 synchronized, voliatile과 동시성 메서드인 wait, notify는 개발자가 직접 사용할 일이 거의 없어졌다. 하지만 Library를 사용하여 Software를 개발하는 경우 Library를 의도대로 잘 사용하기 위해 내부에서 어떻게 동작이 되는지 잘 이해 할 수 있어야 하고, Library가 제공하지 않는 기능을 구현하기 위해서는 Low level 수준의 동시성 개념을 잘 알아두어야 할 필요성이 있다. Java에서의 동시성 개념을 이해하기 위해 Java Thread가 Hardware Thread와 어떻게 연관되어 동작하는지 알아보겠다. Hardware Thread 요즘 대부분의.. Statement VS PreparedStatement 차이점 Statement와 PreparedStatement에 대해 이야기 해보려고 한다. 흔히 둘의 가장 큰 차이점으로 Caching 여부를 언급한다. 과연 Caching이 되는 곳은 어디일까? Statement는 정말 Caching이 안 되는 것인가? Caching 구역을 두 군데로 나누어 볼 수 있다. DB에서의 Caching과 Application Layer에서의 Caching Statement, PreparedStatement 둘 다 첫 실행시에 아래와 같은 과정을 거쳐 DB에 쿼리가 실행된다. (1) Parsing (문장 분석) (2) Compile (3) Execute Statement, PreparedStatement 둘 다 (2) Compile이 발생할 때 DB에 해당 Query로 접근 계획이 C.. 이전 1 다음