본문 바로가기

JAVA4

[Java] DTO (Data Transfer Object) DTO란? DTO라는 단어는 마틴 파울러의 책 P of EAA(Patterns of Enterprise Application Architecture)에서 처음 소개했는데, Data Transfer Object의 약자입니다. DTO는 말 그대로 데이터 전송 객체로, 메서드 호출 수를 줄이기 위해 프로세스 간에 데이터를 전송하기 위해 사용됩니다. 마틴 파울러에 의하면 DTO를 사용하는 주목적은 단일 호출에서 여러 매개변수를 일괄 처리하여 서버로의 왕복 여행을 줄이는 것이라고 설명했습니다. 이를 통해 네트워크 통신 비용에 대한 오버헤드를 줄일 수 있게 된다고 하는데 다음 예시를 통해 쉽게 알아보도록 하겠습니다. 만약, User에 대한 정보에 Role을 포함해서 반환해야 한다면? → REST API를 두 번 호.. 2022. 5. 3.
[Java] 인터페이스와 추상 클래스 어떻게 구분해서 쓸까? 오늘은 추상 클래스(Abstract Class)와 인터페이스(Interface)에 대해 알아보도록 하겠습니다. 다만, 추상 클래스와 인터페이스 각각에 대한 상세한 내용은 다루지 않고, 어떤 상황에서 특정 추상화를 사용해야 할 지에 초점을 맞춰보겠습니다. 글을 읽기 전, 우선 추상 클래스와 인터페이스는 존재 목적이 다르다는 것을 명심해주세요! 추상화 추상 클래스와 인터페이스에 대해 알아보기 전에, 추상화에 대해 알아볼 필요가 있습니다. 추상화란 무엇일까요? 추상화는 객체 지향 프로그래밍의 핵심 기능 중 하나입니다. 추상화는 기능의 내부 구현을 숨기고 사용자에게 기능만 보여주는 것을 의미합니다. 추상화를 위해 공통의 속성이나 기능을 묶어 클래스로 만듦으로써 불필요한 부분을 생략할 수 있으며, 각 객체의 주요.. 2022. 3. 31.
[Java] VO(Value Object)란? VO(Value Object)란 영어 그대로 값 그 자체를 나타내는 객체를 의미합니다. 값 그 자체를 나타낸다는 것은 무슨 의미일까요? 이를 설명하기 위해 아래의 예시를 통해 먼저 알아보도록 하겠습니다. Value Objects Like a Pro를 작성한 Nicolo는 자신의 블로그에서 어떤 웹사이트에서 아래와 같은 질문을 보고 웃으며 창을 껐다고 합니다. 사람의 나이를 표현하기 위해 어떤 변수 타입을 사용해야 할까요? [ ] Integer [ ] Boolean [ ] String 여러분들은 어떤 선택을 하셨나요? 해당 블로그의 저자는 셋 다 정답이 아니다 라고 합니다. 사람의 나이를 표현하는데 Integer를 사용하는 것은 적합하지 않으며 Age 타입을 사용해야 합니다. 그 이유는 다음과 같습니다. .. 2022. 3. 15.
[Java] 불변 객체(Immutable Object)와 final 불변 객체(Immutable Object)란? 불변 객체는 생성 후 그 상태를 바꿀 수 없는 객체를 의미합니다. 즉, 참조하고 있는 데이터를 변경할 수 없어야 하며 read-only 메서드만을 제공해야 하고, 객체의 내부 상태를 제공하는 getter 등의 메서드를 제공하지 않거나 제공을 할 경우, 방어적 복사(defensive-copy)를 통해 제공되어야 합니다. Java에서 대표적인 불변 객체로 String이 있습니다. Java는 String Pool이라는 공간을 가지고 있으며, 해당 공간을 이용해 매번 String 객체를 새로 생성하지 않고 같은 값의 String이라면 String Pool 내에 존재하는 객체를 재사용할 수 있도록 구현되어 있습니다. String str1 = "Hello World";.. 2022. 3. 3.