Core J2EE Patterns - 자바 성능 튜닝 이야기

Daniel6364·2023년 3월 16일
0
post-thumbnail

Core J2EE Patterns

  1. Business Delegate
  2. Session Facade
  3. Data Access Object
  4. Service Locator
  5. Transfer Object

1. Business Delegate

클라이언트와 비즈니스 계층 사이의 상호 작용을 캡슐화하기 위한 객체입니다. 이 패턴은 클라이언트의 비즈니스 계층에 직접적으로 접근하지 않고, 대신 클라이언트에 대한 서비스를 제공하는 역할을 합니다.

보통 비즈니스 레이어는 웹 어플리케이션 등과 같은 클라이언트 측 코드와 밀접하게 연결되어 있습니다. 이 경우, 비즈니스 레이어의 변화가 클라이언트 코드에 영향을 미칠 수 있으며, 이를 방지하기 위해 Business Delegate 패턴을 사용합니다.

Business Delegate는 클라이언트와 비즈니스 계층 사이에 중재자 역할을 하며, 클라이언트가 호출할 서비스를 선택하고, 비즈니스 계층과 상호 작용할 수 있도록 합니다. 이를 통해 비즈니스 레이어의 구현 세부 정보를 감추고, 클라이언트가 비즈니스 레이어와 직접적으로 상호 작용하지 않아도 되도록 해줍니다.

따라서, Business Delegate 패턴은 클라이언트와 비즈니스 레이어 간의 결합도를 낮추고, 시스템의 유연성과 확장성을 향상시키는데 도움이 됩니다.

2. Session Facade

분산 환경에서 비즈니스 로직을 간편하게 관리하기 위한 객체입니다. 이 패턴은 EJB (Enterprise Java Beans)에서 사용되는 것이 일반적이나, 다른 분산 환경에서도 적용될 수 있습니다.

Session Facade는 비즈니스 로직을 캡슐화하여, 클라이언트와 비즈니스 계층 사이의 상호 작용을 간소화합니다. 클라이언트는 Session Facade를 호출하여 비즈니스 로직을 수행하며, Session Facade는 이를 처리하는데 필요한 모든 서비스를 제공합니다. 이를 통해 클라이언트는 비즈니스 로직의 세부 정보를 알 필요 없이, 단순한 인터페이스를 통해 비즈니스 기능에 접근할 수 있습니다.

Session Facade는 비즈니스 계층의 복잡성을 감추고, 클라이언트와 비즈니스 계층 간의 결합도를 낮추는 데 도움이 됩니다. 또한, 여러 클라이언트가 동시에 Session Facade를 사용하여 비즈니스 로직을 수행할 수 있도록 스레드 세이프(Thread Safe)하게 구현됩니다.

따라서, Session Facade 패턴은 비즈니스 로직의 재사용성과 유연성을 높이며, 시스템의 유지보수성과 확장성을 향상시키는데 도움이 됩니다.

3. Data Access Object

데이터베이스와 같은 영구 데이터 저장소로부터 데이터를 가져오거나 저장하기 위한 인터페이스를 제공하는 객체입니다.

DAO 패턴은 소프트웨어 개발에서 데이터 엑세스 로직과 비즈니스 로직을 분리하기 위해 사용됩니다. 이렇게 하면 데이터베이스와 같은 영구 데이터 저장소의 변경이나 대체가 필요한 경우 비즈니스 로직에 영향을 미치지 않으면서 데이터 엑세스 로직을 변경할 수 있습니다.

DAO는 일반적으로 CRUD( Create, Read, Update, Delete ) 작업을 수행합니다. 각 DAO 인터페이스는 해당 데이터 엔티티에 대한 기본 CRUD 메서드를 정의하며, 이를 구체화하는 클래스를 작성합니다. 이러한 클래스는 일반적으로 데이터베이스와 직접 상호 작용하며, 데이터베이스 스키마를 나타내는 객체와 데이터베이스 연결을 관리하는 객체와 함께 작성됩니다.

DAO 패턴은 일반적으로 객체지향 설계 및 소프트웨어 아키텍처에서 사용되며, 특히 Java와 같은 객체지향 프로그래밍 언어에서 많이 사용됩니다. 이 패턴은 또한 테스트 가능성을 향상시키고, 더 나은 유지 보수성과 확장성을 제공합니다.

4. Service Locator

애플리케이션에서 필요로 하는 서비스나 컴포넌트를 찾아주는 역할을 하는 객체입니다.

Service Locator 패턴은 일반적으로 분산 시스템에서 사용됩니다. 분산 시스템에서는 서비스가 여러 서버에 분산되어 있으며, 클라이언트가 각 서비스를 직접 호출하는 것이 어려울 수 있습니다. 이 때 Service Locator를 사용하면 클라이언트는 필요한 서비스를 찾아내는 것이 쉬워집니다.

Service Locator 패턴은 다음과 같은 구성 요소로 구성됩니다.

Service Locator: 서비스나 컴포넌트를 찾아주는 객체입니다. 이 객체는 서비스나 컴포넌트의 이름이나 유형 등의 정보를 사용하여 해당 서비스나 컴포넌트를 찾습니다.

Service: 실제로 클라이언트가 사용할 서비스나 컴포넌트입니다. Service Locator에서는 이러한 서비스나 컴포넌트를 찾아서 반환합니다.

Cache: Service Locator에서 찾은 서비스나 컴포넌트를 캐싱하는 객체입니다. 이를 통해 Service Locator는 다음에 같은 서비스나 컴포넌트를 요청할 때 더 빠르게 반환할 수 있습니다.

Service Locator 패턴은 일반적으로 애플리케이션의 의존성을 줄이고 결합도를 낮추기 위해 사용됩니다. 이 패턴은 일반적으로 대규모 애플리케이션에서 사용됩니다. Service Locator 패턴은 또한 모듈성, 유지 보수성 및 확장성을 높여줍니다.

5. Transfer Object

애플리케이션 간에 데이터를 전송하기 위한 객체입니다.

Transfer Object 패턴은 일반적으로 클라이언트와 서버 간의 통신에서 사용됩니다. 클라이언트와 서버 간에 데이터를 전송하는 데 필요한 데이터를 담고 있는 객체를 만들어 전송하면, 데이터 전송을 단순화하고 객체의 크기를 줄일 수 있습니다.

Transfer Object 패턴은 다음과 같은 구성 요소로 구성됩니다.

Transfer Object: 데이터를 전송하기 위한 객체입니다. 이 객체는 클라이언트나 서버에서 사용됩니다. 보통은 데이터의 일부 또는 전체를 포함하고 있으며, 클라이언트와 서버 간에 전송되는 데이터의 구조와 유형을 나타냅니다.

Business Object: 실제 데이터를 가지고 있는 객체입니다. 이 객체는 일반적으로 서버에서 사용됩니다. Business Object에서 Transfer Object를 생성하거나, Transfer Object에서 Business Object를 생성할 수 있습니다.

Transfer Object 패턴은 데이터 전송을 효율적으로 처리하고, 데이터 전송에 필요한 객체를 단순화하여 코드의 복잡성을 줄입니다. 이 패턴은 또한 데이터 전송 과정에서 발생할 수 있는 오류를 줄이고, 응용 프로그램의 확장성을 높이는 데 도움을 줍니다.


출처
https://chat.openai.com
http://www.corej2eepatterns.com/

profile
The Office Lover

0개의 댓글