Study/엔터프라이즈 애플리케이션 아키텍처 패턴

객체 모델을 사용하면 조직 계층을 나타내는 구성 요소 패턴을 아주 자연스럽게 보여줄 수 있다. 조상, 형제, 자손 및 다른 일반적인 관계의 객체를 얻는 메서드도 쉽게 추가할 수 있다. 반면 관계형 스키마로는 이러한 구조를 표현하기 어렵다. 이런 스키마를 조작하려면 느리고 불편한 다수의 조인이 필요하다. 객체를 지속하는 방법에 서로 연관된 테이블 행만 있는 것은 아니다. 객체를 지속하는 다른 방법으로 객체 그래프 전체를 한 테이블의 큰 객체 하나에 기록하는 직렬화가 있다. 이 직렬화는 메먼토 패턴의 한 형태이다. 메멘토 패턴(Memento Pattern)은 객체의 상태를 저장하고 이전 상태로 복원할 수 있게 해주는 디자인 패턴 중 하나입니다. 일반적으로 객체는 그 상태를 캡슐화하고 있습니다. 메멘토 패턴은..
포함 값이란, 객체가 다른 객체를 참조하는 경우, 그 참조 대상 객체를 포함 값으로 처리하여 하나의 테이블로 매핑하는 방법이다. 객체지향 시스템에서는 여러 작은 객체를 사용하는 것이 합리적이다. 하지만, 데이터베이스 테이블은 여러 작은 객체를 저장하는 데 적합하지 않다. 포함 값은 객체의 값을 객체 소유자의 레코드에 있는 필드로 매핑한다. 작동 원리 소유자 객체를 로드하거나 저장할 때마다 의존 객체를 동시에 로드하거나 저장한다. 지속성은 모두 소유자에 의해 처리되므로 의존 클래스는 자체 지속성 메서드를 포함하지 않는다. 사용 시점 언제 사용해야 하는지는 조금 복잡한 주제이다. 포함 값으로 저장할 가치가 있는지는 로드와 저장에서 알 수 있다. 예를 들어 주문을 로드할 때만 배송 데이터가 메모리로 로드된다면..
일대다 연관 관계에서는 외래 키 매핑을 활용해 연관 관계 매핑을 처리할 수 있다. 하지만 다대다 연관 관계에서는 외래 키를 포함할 단일 값 쪽이 없기 때문에 이 방법은 불가능하다. 이 문제는 관계를 기록하는 추가 테이블을 만들어서 해결할 수 있다. 그런 다음 연관 테이블 매핑으로 다중 값을 이 링크 테이블로 매핑한다. 작동 원리 연관 테이블 매핑의 기본 개념은 링크 테이블을 사용해 연관 관계를 저장하는 것이다. 서로 연결된 두 테이블의 외래 키 ID만 포함하고 연관된 객체 한 쌍당 한 행을 가진다. 링크 테이블은 ID가 없으며 기본키는 연관된 테이블의 두 기본 키를 합성한 것이다. 사용 시점 다대다 연관 관계를 나타낼 때 사용한다. 다른 모든 형식의 연관 관계에도 사용이 가능하다. 그러나 외래 키 매핑보..
트랜잭션 스크립트 내용 추가 예정....😗 도메인 모델 작동 원리 비즈니스 영역을 모델링하는 객체로 구성된 계층을 구성하는 과정이다. 이 객체 중에는 비즈니스 데이터를 나타내는 객체도 있고 비즈니스 규칙을 나타내는 객체도 있다. 이러한 데이터와 프로세스는 프로세스와 작업 대상 데이터를 가깝게 배치하기 위한 클러스터를 형성한다. 객체지향 도메인 모델과 데이터베이스 모델은 비슷해보이지만 차이점이 많다. 모데인 모델은 데이터와 프로세스가 혼합된 구조이고, 상속을 사용하고 다중 값 속성과 복잡한 연결망을 가지고 있다. 이러한 이유로 주로 두 가지 형식의 도메인 모델이 사용된다. 단순 도메인 모델은 대부분의 도메인 객체가 각 데이터베이스 테이블과 일치하므로 외형상 데이터베이스 설계와 거의 비슷해 보인다. 반면 리..
동시성 문제 - 여러 프로세스나 스레드가 동일한 데이터를 조작하는 경우 필연적으로 발생한다. - 문제의 원인을 미리 알기 어렵다. - 테스트하기도 어렵다. 오프라인 동시성 - 여러 데이터베이스 트랜잭션에 걸쳐 조작되는 데이터에 대한 동시성 제어 손실된 업데이트 - 같은 파일을 작업하는 경우 뒤에 파일을 업데이트한 사람의 내용으로 덮어쓰기가 되어 버리는 경우 일관성 없는 읽기 - 올바르지만 한편으로 올바르지 않은 정보의 두 조각을 읽은 경우 발생한다. - 동시성 문제는 정확성 충족만으로는 충분하지 않다. - 동시 작업이 얼마나 많이 진행될 수 있는지를 나타내는 활동성 또한 충족해야 한다. 실행 컨텍스트 - 외부 세계와 상호작용하는 관점에서 중요한 두 가지 컨텍스트로 요청과 세션이 있다. - 운영체제와 관련..
초록색 바탕은 추가적으로 찾아봐야하는 부분이다. 데이터 읽기 데이터를 읽는 메서드를 넣을 위치는 인터페이스 패턴에 따라 달라진다. 데이터베이스와 상호작용하는 클래스가 테이블 기반인 경우 데이터베이스의 테이블마다 클래스 인스턴스가 하나씩 있으므로 읽기 메서드를 삽입 및 업데이트와 결합하는 방법을 쓸 수 있다. 반면 행 기반인 경우 데이터베이스의 행마다 상호작용 클래스가 하나씩 있으므로 이러한 방법을 쓸 수 없다. 행 기반 클래스를 사용하는 경우 검색 작업을 정적으로 만들 수 있지만, 그러면 데이터베이스 작업을 대체할 수 없게 된다. 즉, 테스트 시 데이터베이스를 서비스 스텁으로 대체할 수 없다. 이럴땐 검색기 객체를 별도로 만드는게 가장 좋은 방법이다. 왜냐하면, 각 검색기 클래스는 SQL 쿼리를 캡슐화하..
아키텍처 패턴 1. 도메인 논리가 데이터베이스와 상호작용하는 방법을 좌우하는 아키텍처 패턴 이러한 패턴을 선택할 때는 충분한 주의를 기울여야 한다. 왜냐면 전체 설계에 미치는 파급효과가 크고 리팩터링하기 어렵기 때문이다. 이러한 이유로 SQL 접근을 도메인 논리와는 별도로 분리하고 개별 클래스에 배치하는 것이 좋다. 데이터베이스 테이블당 클래스 하나를 가지도록 구성하는 방법이 좋다. 이러한 클래스는 테이블에 대한 게이트웨이가 된다. 게이트웨이를 사용하는 두 가지 방법 1. 행 데이터 게이트웨이 - 쿼리가 반환하는 각 행마다 인스턴스 하나를 만드는 것 2. 테이블 데이터 게이트웨이 - 레코드 집합 - 테이블식 특성을 흉내 낸 테이블과 행의 범용 자료구조이다, 각 테이블마다 클래스가 하나만 있으면 된다. 중..
트랜잭션 스크립트 도메인 논리를 저장하는 가장 간단한 방식이다. 프레젠테이션에서 입력 받고, 유효성 검사와 계산을 통해 입력을 처리하고, 데이터베이스에 데이터를 저장하고, 다른 시스템에서 작업을 호출하는 프로시저다. 그런 다음 필요에 따라 응답을 구성하고 서식을 지정하는 계산을 수행하고 프레젠테이션에 응답한다. 기본 구성은 사용자가 수행할 각 작업마다 프로시저를 하나씩 만드는 것이다. 장점: 트랜잭션 스크립트는 대부분이 이해할 수 있는 간단한 절차 모델이다. 데이터 원본 계층과 함께 사용하기에 적합하다. 트랜잭션의 경계를 설장하기가 쉽다. 단점: 복잡도가 상승한다. 코드가 많이 중복된다. 결과적으로 명확한 구조가 없어진다. 도메인 모델 복잡한 논리를 객체로 해결하기 위한 모델이다. 한 루틴이 한 가지 사..
삼공비
'Study/엔터프라이즈 애플리케이션 아키텍처 패턴' 카테고리의 글 목록