Study

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