Back-End33 [DDD] 도메인 주도 개발 시작하기 Ch4 Chapter 4 리포지터리와 모델 구현4.1 JPA를 이용한 리포지터리 구현∘ 자바의 ORM 표준인 JPA를 이용해서 리포지터리와 애그리거트를 구현하는 방법 4.1.1 모듈 위치 ∘ 리포지터리 인터페이스는 애그리거트와 같이 도메인 영역에 속함 ∘ 리포지터리를 구현한 클래스는 인프라스트럭처 영역에 속함 4.1.2 리포지터리 기본 기능 구현 ∘ 리포지터리가 제공하는 기본 기능 - ID로 애그리거트 조회하기 : findBy프로퍼티이름(프로퍼티 값) - 애그리거트 저장하기 : save() ∘ JPA는 트랙잭션 범위에서 변경한 데이터를 자동으로 DB에 반영 ∘ 애그리거트를 삭제하는 기능을 만들 수 있음 4.2 스프링 데이터 JPA를 이용한 리포지터리 구현∘ 스프링 데이터 JPA는 지정한 규칙에 맞게 리포지터리 .. 2024. 3. 18. [DDD] 도메인 주도 개발 시작하기 Ch3 Chapter 3 애그리거트 3.1 애그리거트 ∘ 상위 수준에서 모델을 정리한 것이 관계를 이해하기 더 쉬움 ∘ 모델을 이루고 있는 객체들을 보는 것보다 보다 상위 수준에서 바라보게 되면 관계 파악이 수월해짐 ∘ 추후에 코드 변경 및 확장을 하려면 도메인 모델의 관계 파악이 되어야 함 ∘ 코드를 고칠 때 전체적인 것을 고려하지 않고 바꾸려는 세부적인 부분만 보면 안 됨 ∘ 애그리거트 : 모델을 상위 수준에서 볼 수 있는 방법. 관련된 객체를 군으로 묶음. ∘ 애그리거트로 묶으면 상위 수준에서도, 그보다 구체적인 수준에서도 모델 파악에 용이함 ∘ 한 애그리거트에 속한 객체는 유사하거나 동일한 라이프 사이클을 가짐 ∘ 하나의 객체는 하나의 애그리거트에만 속할 수 있음 ∘ 도메인 규칙과 요구사항에 따가 경계 .. 2024. 3. 18. [DDD] 도메인 주도 개발 시작하기 Ch2 Chapter 2 아키텍처 개요 2.1 네 개의 영역 ∘ 아키텍처를 설계할 때 표현, 응용, 도메인, 인프라스트럭처가 필요 - 표현 영역(UI 영역) : 사용자의 요청을 받아 응용 영역에 전달함, 응용 영역의 처리 결과를 사용자에게 보여줌 - 응용 영역 : 시스템이 사용자에게 제공해야 할 기능을 구현함, 도메인 영역의 도메인 모델 사용 - 도메인 영역 : 도메인 모델을 구현함 - 인프라스트럭터 영역 : 기술의 실제 구현 2.2 계층 구조 아키텍처 ∘ 계층 구조의 아키텍처가 많이 사용됨. 계층 구조에서는 상위 계층에서 하위 계층으로의 의존만 존재하고 하위 계층은 상위 계층에 의존하지 않음 ∘ 인프라스트럭처에 의존하면 ’많은 것을 만들고 나서야 테스트를 해볼 수 있다는 어려움‘, ’기능 확장의 어려움‘이 발.. 2024. 3. 10. [DDD] 도메인 주도 개발 시작하기 Ch1 Chapter 1 도메인 모델 시작하기 1.1 도메인이란? ∘ 도메인 : 소프트웨어로 해결하고자 하는 문제 영역 ∘ 한 도메인은 하위 도메인으로 나눌 수 있음 ∘ 한 하위 도메인은 다른 하위 도메인과 연동해서 완전한 기능 제공 ∘ 소프트웨어가 도메인의 모든 기능을 제공하는 것은 아님. 외부 시스템과 기능 연동해서 제공하기도 함. ∘ 상황을 고려해서 하위 도메인이 구성됨 1.2 도메인 전문가와 개발자 간 지식 공유 ∘ 개발자가 기능 구현을 위해 코드를 작성할 때 맨 첫 단계는 요구사항 분석 ∘ 요구사항을 올바르게 이해하기 위해서 개발자는 전문가와 직접 대화해야 함 1.3 도메인 모델 ∘ 도메인 모델 : 특정 도메인을 개념적으로 표현한 것. 도메인 자체를 이해하기 위한 개념 모델. ∘ 개념 모델인 도메인 모.. 2024. 3. 10. varchar https://kong-dev.tistory.com/231 VARCHAR(20)에는 한글로 몇 글자까지 입력가능할까?레벨1의 하이라이트 체스미션을 진행하면서, DB에 게임룸마다 게임을 생성하고 저장하는 기능을 구현해야 했다. 각각의 게임룸에 이름을 정할수 있으면 좋을것 같아서 room에 대한 테이블을 아래kong-dev.tistory.comhttps://velog.io/@sunaookamisiroko/MySQL-varchar255%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EC%9D%B4%EC%9C%A0 MySQL varchar(255)를 사용하는 이유?이유 MySQL에서 테이블을 만들 때 varchar(255)를 자주 사용했다. varchar가 가변길이 타입으로.. 2024. 1. 23. 스프링 소수 타입 https://inpa.tistory.com/entry/JAVA-%E2%98%95-%EA%B8%B0%EB%B3%B8-%EC%9E%90%EB%A3%8C%ED%98%95-%EC%A2%85%EB%A5%98-%EC%B4%9D%EC%A0%95%EB%A6%AC-int-double-char-String ☕ JAVA 기본 자료형 & 데이터 타입 - 한눈에 정리정수 자료형 자바의 정수를 표현하기 위한 자료형은 대표적으로 int, long 이 있다. (byte, short 도 있지만 잘 사용하지 않는다.) 정수형 타입 할당되는 메모리의 크기 데이터의 표현 범위 byte 1바이트inpa.tistory.com 2024. 1. 23. [JPA] 자바 ORM 표준 JPA 프로그래밍_9장 9장 값 타입 ∘ JPA의 데이터 타입은 크게 엔티티 타입과 값 타입으로 분류됨. - 엔티티 타입은 엔티티 객체이고, 값 타입은 단순히 값을 나타내는 타입이나 객체 ∘ 값 타입은 기본값 타입, 임베디드 타입, 컬렉션 값 타입으로 나뉨 ∘ 모든 값 타입은 엔티티의 생명주기에 의존 9.1 기본값 타입 ∘ 자바 기본 타입, 래퍼 클래스, String ∘ 엔티티와 달리 식별자 값이 없고, 독자적인 생명주기가 없음 9.2 임베디드 타입(복합 값 타입) ∘ 직접 정의한 새로운 값 타입 ∘ 엔티티가 가지고 있는 데이터를 응집력 있게 만듦 - [String city, String street, String zipcode] ⇒ [Address homeAddress] ∘ @Embedded, @Embeddable 사용. 둘.. 2023. 6. 27. [JPA] 자바 ORM 표준 JPA 프로그래밍_7장 7장 고급 매핑 7.1 상속 관계 매핑 ∘ 관계형 데이터베이스에는 객체지향 언어에서의 상속과 같은 개념이 없음 ∘ ORM에서의 상속 관계 매핑은 객체의 상속 구조와 데이터베이스의 슈퍼타입 서브타입 관계를 매핑하는 것 ∘ 슈퍼타입 서브타입 논리 모델을 실제 물리 모델 테이블로 구현하는 방법 - 각각의 테이블로 변환 : 각각을 모두 테이블로 만들고 조인 사용해서 조회. 조인 전략. - 통합 테이블로 변환 : 테이블 하나만 사용해서 통합. 단일 테이블 전략. - 서브타입 테이블로 변환 : 서브 타입마다 하나의 테이블 만듦. 구현 클래스마다 테이블 전략. 7.1.1 조인 전략 ∘ 조인 전략 : 엔티티 각각을 모두 테이블로 만들고 자식 테이블이 부모 테이블의 기본 키를 받아서 기본 키 + 외래 키로 사용 ∘ 테이.. 2023. 6. 24. 이전 1 2 3 4 5 다음