보호되어 있는 글입니다.
정말 오랜만에 포스팅인데, 이번 포스팅에서는 Effective JAVA 와 같은 책에서 정말 많이 언급되는 Composition, Aggregation, Delegation 에 대해서 정리해보려고 한다. 이 세가지를 함께 정리하는 이유는 굉장히 비슷하면서도 다르면서도.. 그런 개념들이기 때문이다! 개념에 대해서 설명하기에 앞서 내가 프로젝트에서 Delegation 을 활용한 사례에 대해서 소개하려고 한다. 최근에 프로젝트에서 외부 업체로부터 SDK 를 제공받아 개발을 하게 되었는데, 해당 SDK 의 기능중에서 한 가지는 byte[] 타입의 인증서를 EckaCertificate 객체로 파싱해주고 이를 통해 인증서 정보를 읽어올 수 있도록 하는 것이었다. 하지만 해당 객체의 메소드중 하나인 eckaCerti..
JPA 에서 가장 중요한 개념이라고 하면 연관관계 매핑과 영속성 컨텍스트가 있다. 이번 포스팅에서는 이 중에서 연관관계 매핑에 대해서 이야기해보려고 한다. 객체지향 프로그램에서의 객체와 RDB 에서의 테이블이 서로 연관관계를 맺는 방법이 다르다. 그렇기 때문에 이 둘의 차이를 채우기 위한 매핑과정이 필요하고 이를 ORM 인 JPA 가 수행하게 된다. 연관관계에서는 아래와 같은 용어들이 등장한다. 방향(Direction) : 단방향 연관관계, 양방향 연관관계 다중성(Multiplicity) : 다대일(N:1), 일대다(1:N), 일대일(1:1), 다대다(N:M) 연관관계의 주인(Owner) 데이터 중심의 모델링 JPA 에서 해주는 연관관계 매핑에 대해서 알아보기에 앞서 잘못된 연관관계 방법에 대해서 살펴보..
보호되어 있는 글입니다.
CompletableFuture future = asyncRestTemplate.exchange(...) .handleAsync((responseEntity, throwable) -> { if (throwable instanceof HttpClientErrorException) { throw new CustomException(((HttpClientErrorException) throwable).getStatusCode()); } else if (throwable instanceof RestClientException) { throw new CustomException(500); } return responseEntity; }); 실제 프로젝트에서 위와같은 코드를 사용했는데 throw new 라인에서 다..
이번 포스팅에서는 Proxy Pattern 에 대한 개념과 Spring Boot 에서 이러한 Proxy Pattern 을 사용한 예시에 대해서 살펴보려고 한다. Proxy 패턴이란? Proxy 패턴은 특정 객체가 호출되기 전에 그에 대한 접근을 제어하기 위해 사용되는 디자인 패턴이다. 즉 특정 객체가 호출될 때 해당 접근을 가로채 Proxy 객체가 그 역할을 대신하는 것을 의미한다. 제어권을 가져와 부가적인 기능을 수행한 후 기존 객체를 다시 Delegate 방식으로 호출할 수도 있다. 그림을 통해서 설명하면 기존에 클라이언트가 RealSubject.DoAction() 메소드를 호출하는 흐름을 Proxy 객체의 DoAction() 메소드로 가져와서 처리하고, 거기서 Delegate 하게 RealSubje..