전체 글

기록과 정리의 공간
반응형
· DDD
@SecondaryTable을 이용한 밸류 매핑 한 테이블 내부에 컬럼을 다른 테이블에서 관리할 때가 있다. (밸류 컬렉션을 별도 테이블로 매핑) 만약 자식 테이블에서 외부키를 부모 테이블과 같이 쓰는 경우가 있는데 이때 @SecondaryTable과 @AttributeOverride를 이용해서 자식 테이블과 식별자를 매핑한다. 자식 테이블은 식별자가 존재하지만 밸류로 속하고 엔티티라고 볼 수 없다. 무조건 연관되어 두개의 테이블 모두 가져와야 할때(Inner Join)만 사용해야 한다. 예시 상품에 상품 소개 내용과 재고 정보를 사용 ProductContents = 상품 소개 내용, ProductStock = 재고 정보 @Entity @Table(name = "product") @Where(clause..
· DDD
엔티티(Entity) 식별자를 갖는 객체 식별자 유형 특정 규칙에 따라 생성 UUID 사용 (java.util.UUID) 값을 직접 입력 일련번호 사용(시퀀스나 DB의 자동 증가 컬럼 사용)\ // 엔티티 클래스 @Entity @Table(name = "member") public class Member() { @Id private int id; // 식별자 } 밸류(Value) 타입 개념적으로 완전한 하나를 표한할 때 사용한다. 예를들어 주소(zipcode, address, detailAddress), 받는 사람(name, phoneNumber) 등등 // 엔티티 클래스 @Entity @Table(name = "member") public class Member() { @Id private int id..
· DDD
BOUNDED CONTEXT 간 직접 통합 서비스를 구축하다 보면 두 BOUNDED CONTEXT 간에 통합이 필요할 때가 있다. 두 BOUNDED CONTEXT를 직접적으로 통합하는 방식으로 주로 두 BOUNDED CONTEXT 간에 REST API를 호출하는 방식(직접 통합)이 있다. 두 BOUNDED CONTEXT을 통합하는 도메인 서비스를 사용한다. // 상품 추천 기능을 표현하는 카탈로그 도메인 서비스 public interface ProductRecommendationService { public List getRecommendationsOf(ProductId id); } 도메인 서비스를 구현한 클래스는 infraStructure 영역에 위치한다. 만약 외부 시스템에서 받아온 데이터가 내부에서..
· DDD
고객 / 공급자 관계를 갖는 BOUNDED CONTEXT 두 BOUNDED CONTEXT간 관계 중 가장 흔한 관계는 한쪽에서 API를 제공하고 다른 한쪽에서는 그 API를 호출하는 관계이다. 이 관계에서 API를 사용하는 BOUNDED CONTEXT는 API를 제공하는 BOUNDED CONTEXT에 의존하게 된다. 공개 호스트 서비스(OPEN HOST SERVICE) 공개 호스트 서비스의 대표적인 예는 검색이다. 블로그, 카페, 게시판과 같은 서비스를 제공하는 포탈은 각 서비스 별로 검색 기능을 구현하기 보다 검색을 위한 전용 시스템을 구축하고 검색 시스템과 각 서비스를 통합한다. 이때 상류 컴포넌트는 검색 시스템이고, 하류 컴포넌트는 블로그, 카페, 게시판이 된다. 상류 컴포넌트의 서비스는 상류 BO..
· DDD
의존성이란? 변경에 의한 영향을 받는 경향 B가 변경될때 A도 함께 변경 → A가 B에 의존하고있다. 클래스 의존성 Association (연관관계) class A { private B b; } Dependency(의존관계) class A { public B method(B b) { return new B(); } } Inheritance(상속관계) class A extends B { } Realization(실체화 관계) class A implements B { } 패키지 의존성 패키지에 포함된 클래스 사이의 의존성 예를들어 A패키지에서 클래스에서 B패키지에 있는 클래스에 의존성이 있다면 패키지 의존성이 존재한다. 좋은 의존성은? 1. 양방향 의존성을 피하라! Bi-Directional(양방향) A가 ..
· Java
오버라이딩이란? 조상 클래스로부터 상속(inheritance)받은 메서드의 내용을 변경하는 것 상속(inheritance)받은 메서드를 그래도 사용하기도 하지만, 자손 클래스 자신에 맞게 변경해야하는 경우가 많다. class Point { int x; int y; String getLocation() { return x + "," + y; } } class Point3D extends Point { int z; String getLocation() { // 오버라이딩 return x + "," + y + "," + z; } } 오버라이딩의 조건 오버라이딩은 메서드의 내용만을 새로 작성하는 것이므로 메서드의 선언부는 조상의 것과 완전히 일치해야 한다. 메서드의 선언부는 조상의 것과 완전히 일치해야 한다. ..
· Java
상속의 정의와 장점 상속이란, 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것이다. 코드를 공통적으로 사용하는 클래스를 상속받게 되면 적은 양의 코드로 클래스를 작성할 수 있고 , 코드를 공통적으로 관리할 수 있어 코드의 재사용성과 중복을 제거 할 수 있다. 새로 작성하고자 하는 클래스의 이름 뒤에 상속받고자 하는 클래스의 이름을 extends 와 함께 써주기만 하면 된다. 상속해주는 클래스를 조상 클래스(부모 클래스, 상위 클래스, 기반 클래스)라고 하며, 상속받는 클래스는 자손 클래스(자식 클래스, 하위 클래스, 파생된 클래스)라고 한다. class Child extends Parent { ... } 조상 클래스와 자손 클래스의 관계 상속받은 자손 클래스는 상속해준 조상 클래스를 포함하고 있다..
· Java
변수의 초기화란? 변수를 선언하고 처음으로 값을 저장하는 것 경우에 따라서 필수적이기도 하고 선택적이기도 하지만, 가능하면 선언과 동시에 적절한 값으로 초기화 하는 것이 바람직하다. 멤버 변수는 초기화를 하지 않아도 변수의 자료형에 맞는 기본값으로 초기화 된다. 하지만 지역변수는 사용하기 전에 반드시 초기화 해야한다. class InitTest { int x; // 인스턴스 변수 int y = x; // 인스턴스 변수 void method() { int i; // 지역변수 int j = i; // 에러 발생. 지역변수를 초기화 하지않고 사용 } } 명시적 초기화(explicit initialization) 변수를 선언과 동시에 초기화하는 것을 명시적 초기화라고 한다. 여러 초기화 방법 중에서 가장 우선적..
· Java
재귀호출(recursive call)이란? 메서드의 내부에서 메서드 자신을 다시 호출하는 것 재귀호출을 하는 메서드를 재귀 메서드라 한다. 무한히 자기 자신을 호출하기 때문에 무한 반목에 빠질 수 있어 조건문이 필수적으로 따라다닌다. void method() { // 재귀 메서드 if (n == 0) return; System.out.println(n); method(--n); // 재귀 호출 // while(n != 0) { //System.out.println(--n); // } } 재귀호출을 왜 사용하는가? 일반적인 반복문보다 재귀호출을 사용할 경우 수행시간이 더 오래 걸린다. 하지만 재귀호출이 주는 논리적 간결함 때문에 몇 겹의 반복문과 조건문 으로 복잡하게 작성된 코드가 재귀호출로 작성하면 보다..
· Java
오버로딩(overloading)이란? 사전적 의미는 많이 싣는 것을 뜻한다. 한 클래스 내에 이미 사용하려는 이름과 같은 이름을 가진 메서드가 있더라도 매개변수의 개수 또는 타입이 다르면 같은 이름을 사용해서 메서드를 정의할 수 있다. 보통 하나의 메서드 이름에 하나의 기능만을 구현해야 하는데 여러기능을 구현하기 때문에 오버로딩(많이 싣는 것)이라고 한다. 같은 일을 하지만 매개변수를 달리해야하는 경우에 오버로딩을 구현한다. 오버로딩의 조건 메서드 이름이 같아야 한다. 매개변수의 개수 또는 타입이 달라야 한다. 반환 타입(return type)은 아무 상관이 없다. 메서드의 이름이 같다 하더라도 매개변수가 다르기 때문에 서로 구별될 수 있어 오버로딩이 가능하다. int add(int a, int b) {..
반응형
Beekei
Bonglog - 기록과 정리의 공간