7장 - 서비스도메인 서비스가 무엇인지?스프링에서 서비스는 왜 서비스인지?서비스 컴포넌트에 추가적으로 기대하는 역할이나 책임은 무엇인지? 서비스의 컴포넌트의 역할 크게 3가지1 도메인 객체를 불러오기2 도메인 객체나 도메인 서비스에 일을 위임하기3 도메인 객체의 변경 사항을 저장하기 스프링에서의 Service @Service의 자바독 요약@Service는 에릭 에반스의 DDD에서 영감을 받아 만들어진 애너테이션서비스는 J2EE 패턴 중 하나인 비즈니스 서비스 파사드처럼 사용될 수 있음 DDD (도메인 주도 설계)DDD에서 정의하는 '서비스'란? -> 연산을 위한 컴포넌트DDD에서의 서비스 컴포넌트 (에릭에반스가 한 말)자신의 본거지를 엔티티나 값객체에서 찾지 못하는 중요한 연산이 있다. 일부는 본질..
5장 순환참조두개 이상의 객체나 컴포넌트가 서로를 참조함으로써 의존관계에 사이클이 생기는 상황@Data class Team { private long id; private String name; private List members;} @Data class Member { private long id; private String name; private Team myTeam;}팀과 팀원의 관계를 표시한 클래스 -> 순환참조임양방향 매핑JPA Entity의 양방향 매핑은 순환참조다. 순환참조의 문제점 무한루프순환참조가 있다는 것은 무한 루프가 발생할 수 있다는 것임. 시스템 복잡도순환참조는 시스템의 복잡도를 높임. (의존성 전이 등..
https://www.yes24.com/Product/Goods/126845564이번 시간에는 자바/스프링 개발자를 위한 실용주의 프로그래밍 4장 - SOLID를 읽고 정리해보겠습니다. SOLID 원칙의 목적 - 응집도를 높이고 의존성을 낮춘다. 본론에 들어가기에 앞서, 가장 먼저 책에서 말하고자하는 SOLID의 원칙의 목적은 무엇일까? SOLID 원칙이 추구하는 것은 바로 "객체지향의 설계".그리고 설계 원칙을 통하여 소프트웨어의 응집도를 높이고 의존성을 낮추는 것을 목표로 함. SOILD 원칙을 무작정 암기하는 것보다 "응집도를 높이고 의존성을 낮추는 것에 집중"하는 것이 좋다. 유지보수성을 판단하는 세 가지 맥락 - 영향 범위, 의존성, 확장성설계 관점에서 코드의 유지보수성을 판단하는 세 ..
안녕하세요. 이번 게시물에선 자바/스프링 개발자를 위한 실용주의 프로그래밍 3장 - 행동을 읽고 정리해보겠습니다.또한 객체지향사상에 부합하지 않는 java interface의 default 메서드에 대한 고찰도 짤막하게 해보았습니다. 데이터 위주 사고 방식 VS 행동 위주 사고 방식public class Car { //데이터 위주의 사고 방식 private Frame frame; private Engine engine; List wheels; private float speed; private float direction;}public class Car { //행동 위주의 사고 방식 public void drive(){} public void changeDirect..
안녕하세요. 이번 게시글에선 자바/스프링 실용주의 프로그래밍 2부 - 객체의 종류를 읽고 정리해보았습니다.또한 현재 개인 프로젝트로 DTO로 Record로 사용하는 것이 어떤 의의가 있는지도 알아보겠습니다. 2부 객체의 종류 VO - 값 객체값 객체 예시 코드 (엄밀히 말해서 Color 클래스는 객체가 아님. 해당 클래스로 만들어진 객체가 VO)public class Color { public final int r; public final int g; public final int b; public Class(int r, int g, int b) { //.. 검증 로직 this.r = r; this.g = g; this.b = b; ..
안녕하세요. 이번 시간에는 자바/스프링 실용주의 프로그래밍 책을 읽고 정리해보고제 생각을 공유하는 게시글을 작성해보겠습니다. 1부 객체지향 객체지향에서는 복잡한 문제를 역할과 책임에 따라 '개별 객체'로 분해합니다.분해된 각기 다른 특성과 기능의 객체들이 상호작용하고 협력해 문제를 해결합니다. 01 절차지향과 비교하기 컴퓨터 공학에서 말하는 Procedure는 '함수'를 가리킵니다. (순차지향 = 어셈블리어, 절차지향 = C언어)따라서 절차지향 프로그래밍은 함수 지향 프로그래밍. 아래는 자바를 사용하지만 함수 위주의 프로그래밍으로 코딩한 절차지향 코드의 예시. @Service@RequiredArgsConstructorpublic class RestaurantChainService { priva..