왜?코테에서 가장 자주 사용하는 Stream API에 대해 공부해보낟.
Stream API의 특징
원본 데이터를 변경하지않는다.
Stream은 일회용이다.
내부 반복으로 작업을 처리한다.
연산 종류
생성하기
가공하기
결과만들기
예시
12345678List<String> myList = Arrays.asList("a1", "a2", "b1", "c2", "c1");myList .stream() // 생성하기 .filter(s -> s.startsWith("c")) // 가공하기 ...
왜?DDD관점에서 도메인 및 비즈니스 로직 설계 시
도메인 모델은 크게 Entity와 VO로 구성되며,
이때 Entity, VO를 구분하기 위해 특성을 기록해놓는다.
Entity란?Entity는 “고유한 식별자에 의해 특정된다”라는 특징을 가지고 있다.
생명 주기 동안 연속성을 가지고, 독립적으로 동일성을 유지하고있다면, Entity이다.
그렇다면 Entity 는 어떤 조건들에 의해 VO와 구분되는지 알아봅시다.
ID로 구별되는 동등성 -> 반드시 ID값을 갖는다.
가변성 : ID를 제외한 속성값들은 생명주기 동안 변...
참조
참조1
참조2
참조3
왜
spring 에서 전파단계를 학습하여, Transaction을 더 잘 다뤄보자
JDBC, JPA 의 차이를 알아보자
사전 지식
JPA
→ ORM 표준 스펙(인터페이스 규격)
→ EntityManager, EntityManagerFactory, EntityTransaction 같은 인터페이스 정의만 함.
Hibernate
→ JPA 구현체 + 자기만의 ORM 프레임워크
→ JPA가 정의한 EntityManager 인터페이스를 구현하고, 내부에서 SQL 만들고 실행함.
EntityMana...
참고자료
ADR 참고자료
ADR 예시
왜?
서비스를 개선함에 따라, 왜 이런 결정을 했었는지 남겨놓기 위해서
ADR?
의미 : Architecture Decision Recode의 줄임어. 어떤 문제, 이슈들에 대해서 어떻게 결정되었는지 남기는 문서
구성
Title
Status
Context
Decision
Consequences
Title
ADR에 대한 제목
Status
해당 문서의 상태를 나타낸다
예시 : Proposed, accepted, rejected, deprecated, superseded
Contex...
Entity id 생성 방식 정리빠른 ID 생성
특징
엔티티가 생성되기 전 ID 정책에 따라서 직접 생성된다.
key를 시스템에서 만들어낸다는 것은 기본적으로 충돌 내성이 필요하다
예시
도메인 모델에서 직접 generateId() 를 호출하여 ID를 발급
엔티티 생성하기 전에 먼저 DB에게 getNextId() 호출해서 ID를 발급
식별자 생성을 위한 BoundedContext를 만들고, 분산 환경에서도 유일한 ID 생성
장점
엔티티가 DB 저장 전이라도 도메인 이벤트 발행 시, id값이 포함될 수 있다
단점
직접 ...
책을 읽은 이유
과거에 발생한 문제 설명
상황 : 메시지 발송 자동화 프로그램 개발 당시, 메시지 발송 전에 메시지 객체를 구성해주는 서비스를 MessageCombineService 로 명명하였다
문제: Combine의 의미는 단순히 단어 및 문장을 결합하는 의미이다. 이로 인해 팀원들이 MessageCombineService를 단순히 안내 문구들을 조합해주는 서비스로 오인하였다.
원인: 해당 서비스의 책임은 안내 문구 작성 및 메시지 객체를 구성해주는 역할을 하고 있었다
해결: 기존 서비스명에서 메시지를 구성해주는 기...
책을 읽은 이유
문제점
상황: 회사의 개발 방향과 다른 설계와 코드가 작성 되었고, 한달 이상 방치되어있었다.
원인: 코드 작성 전, 좋은 의사소통을 하지 않았다.
해결법:
대상 : 개발자 및 회사의 구성원
목적: 코드 뿐만 아니라 좋은 의사소통의 중요성 공유
방안 :
적절한 의사소통 주기 설정
생각이 정리된 대화하기
“잘” 정리된 자료 작성하기
서론성공적인 커뮤니케이션
공통의 상징, 기호 또한 행동을 사용하여 아이디어나 정보를 공유하거나 교환함으로써 공동의 이해를 도모하는 것이다.
패턴
패턴의 분류
패...
왜?
문제점: 논리적 사고 및 정리가 되지 않은 상태로 내 생각의 흐름에 따라 말하며 소통했다.
결과:
겪어본 상황: 프로젝트 관련 일을 할 때, 서로 소통이 되지 않아, 같은 설명을 반복했다.
들어본 말: “그래서 결론이 뭐야?”, “무슨 말 하는지 모르겠어, 다시 이야기해 줘”
해결책: 논리적 사고 및 결과를 정리하는 법을 학습한 후, 사고 정리하여 소통한다.
논리 도해정보 정리
의미
목적에 맞게 대량의 정보(다른 곳에서 얻은 것)를 분해하여 의미 있는 정보(내 생각)만 남기고 재구성하는 것.
생각을 정리하는 것...
참고
https://youtu.be/HnvitMTkXro?si=pmzKOTdIzsvPvZLW
추가 학습 경로
OpenAI랑 Anthropic에서 새로 뭐 발표하면 그거 보고
https://docs.anthropic.com/ko/docs/build-with-claude/prompt-engineering/long-context-tips
https://platform.openai.com/docs/guides/text?api-mode=responses
Cursor 문서랑 업데이트 노트
cursor 업데이트 노트
LLM ...
왜?
DDD 개발 예시를 알기위해서
DDD의 정확한 예시를 알기위해
도메인 기본 지식
도메인 = 문제의 영역
도메인 모델 -> 엔티티와 값객체로 나눔
엔티티 - 식별값이 존재
값 객체 - 식별값이 없음
보통은 루트 엔티티 + 값 객체로 구성되어 하나의 애그리거트가 된다.
애그리거트
애그리거트는 하나의 Repository, 하나의 Transaction 단위를 가지는 집합이다.
다음과 같이 하위 도메인 모델들의 기능들의 상태변화 및 비즈니스 로직을 구현하고있다. 따라서 루트 애그리거트를 통하여 하위 도메인 모델의 ...