728x90 Books34 살아 있는 자들을 위한 죽음 수업 (이호) 밀리의 서재에서 어떤 인문학 책을 볼까 넘기다가 제목에 끌려 독서한 책이다. 법의학자 라는 생소한 직업에 대해 알 수 있었으며 생명의 대한 소중함과 살아있음에 감사함을 느낄 수 있는 책. 약 270p(종이책기준) 중 '플라세보' 라는 단어를 간략히 설명해준것이 기억에 남는다.믿음에 관련한 내용인데 '기쁘게 하다' 의미를 가진 '플라케레' 라는 라틴어에서 유래했다.누구나 한번쯤 들어본 플라세보 효과는 환자의 마음가짐이 의료적 효능에 영향을 미칠 수 있다 라는 뜻을 가지고 있다.반대로, '노세보 효과' 도 있다.부정적인 믿음을 가지게 되면 실제로 부저적인 결과가 나타나는 현상을 말한다. 즉, 생각이 실재하는 결과를 만들어 낼 수 있다는 것을 의미한다. 어떤 일, 행동을 하든 사람은 생각을 한다.하기싫은 일,.. 2025. 3. 26. 결국 잘되는 사람들의 태도 (앤드루 매코널) 출근시간(약 40분정도) 항상 밀리의서재로 독서를 하고 있다.소설도 베스트 셀러에 있는 (홍학의 자리, 13계단, 대도시의 사랑법, 유괴의 날, 용의자 X 의 헌신 등등..) 재밌게 읽었다.요즘 슬럼프? 가 온거같아서 자기개발서를 꾸준히 읽고 있다.이전에는 책에 나온 구문을 따로 적지 않았는데, 다른 책도 나중에 되새겨볼만한 구문은 적어놓고 생각날때, 마음 다잡을때 보면 좋을것 같다. 자기개발서의 내용이 대체로 누구든지 다 아는 내용이라고 생각한다.그치만 '이렇게 살아야지, 열심히 살아야지' 라는 열정을 한번더 끌어올릴 수 있는 계기가 되는것 같다. --- 스스로 통제할 수 있는 일과 아닌 일을 구분해서 경계를 설정하고, 정말 중요하게 여기는 일에 몰두함으로써 인생의 주인으로 다시 일어서여 한다.- 쓸.. 2025. 3. 13. Chapter10. 이벤트 외부 서비스가 정상이 아닐 경우, 트랜잭션 처리를 어떻게 해야할까 ? 비동기 이벤트를 사용해서 두 시스템 간의 결합도를 낮춘다. ( 강결합 → 약결합 ) 이벤트가 발생한다 → 상태가 변경됐다 → 해당 이벤트에 반응하여 원하는 동작을 수행하는 기능 작성 이벤트 클래스 : 이벤트를 표현 디스패처 : 스프링이 제공하는 ApplicationEventPublisher 를 이용 Events: 이벤트를 발행, 이벤트 발행을 위해 ApplicationEventPublisher 를 사용 이벤트 핸들러 : 생성 주체가 발생한 이벤트를 전달받아 이벤트에 담긴 데이터를 이용해서 원하는 기능을 실행 ex) ‘주문 취소’ 이벤트를 받는 이벤트 핸들러는 해당 주문의 주문자에게 SMS로 주문 취소 사실을 알린다. 이벤트 디스패처 :.. 2024. 4. 17. Chapter7~8. 도메인서비스 ~ 애그리거트 트랜잭션 관리 여러 애그리거트가 필요한 기능 ex) 결제 금액 계산 로직 → 상품, 주문, 할인, 회원 애그리거트 등 필요. 하나의 애그리거트에 넣기 애매한 도메인 기능을 억지로 넣어 구현하면 안된다. 도메인 기능을 별도 서비스로 구현하는 방법을 사용한다. 도메인 서비스는 도메인 로직을 표현하므로 도메인 서비스의 위치는 다른 도메인 구성요소와 동일한 패키지에 위치 @Service @Transactional public class PaymentCalculationService { private final ProductRepository productRepository; private final DiscountRepository discountRepository; private final MemberRepository m.. 2024. 4. 10. Chapter6. 응용 서비스와 표현 영역 사용자에게 기능을 제공하려면 도메인과 사용자를 연결해 줄 표현 영역과 응용 영역이 필요. 응용 서비스 애플리케이션의 사용 사례(Use Case)를 구현하는 역할 주로 사용자의 요청을 처리하고, 도메인 객체 간의 상호 작용을 조정하여 트랜잭션 경계를 설정 응용 서비스는 도메인 로직을 직접적으로 구현하지 않고, 도메인 계층의 서비스와 리포지토리를 사용하여 해당 기능을 수행 // 도메인 로직을 직접 구현하지 않는다 @Service public class OrderService { @Autowired private OrderRepository orderRepository; @Autowired private ProductService productService; @Transactional // 트랜잭션 경계 설정.. 2024. 4. 8. Chapter5. 스프링 데이터 JPA를 이용한 조회 기능 CQRS : 명령 모델과 조회 모델을 분리하는 패턴 명령 모델 : 상태를 변경하는 기능 구현 ex) 회원 가입, 주문 취소 조회 모델 : 데이터를 보여주는 기능 ex) 주문 목록, 주문 상세, 회원 상태 스프링 데이터 JPA 간단 예제 // Entity 클래스 생성 @Entity @Getter public class Book { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String title; private String author; } // Repository 인터페이스 생성 public interface BookRepository extends JpaRepository { } // Service 클.. 2024. 4. 8. Chapter4. 리포지터리와 모델 구현 모듈 위치 // 인터페이스는 도메인 하위에 위치 domain/ └── repository/ └── UserRepository.java // 구현체는 인프라스트럭처 하위에 위치 infrastructure/ ├── repository/ └── JpaUserRepository.java JPA 를 사용하면 수정한 결과를 반영하는 메서드를 따로 추가하지 않아도 자동으로 DB 에 반영한다 ( 변경 감지 ) 스프링 데이터 JPA 예제 @Entity public class User { @Id @GeneratedValue private Long id; private String name; private int age; } public interface UserRepository extends JpaRepository {.. 2024. 4. 8. Chapter3. 애그리거트 애그리거트 : 복잡한 도메인을 이해하고 관리하기 쉬운 단위로 만드려면 상위 수준에서 모델을 조망할 수 있는 방법 애그리거트는 도메인 주도 설계(DDD)에서 사용되는 중요한 개념 애그리거트는 함께 변경되는 일관성 있는 엔터티들의 집합 애그리거트 내 엔터티들은 서로 밀접하게 연관되어 있으며, 외부 엔터티는 애그리거트 루트를 통해서만 애그리거트 내 엔터티에 접근 가능 애그리거트 루트 : 애그리거트를 식별하고 외부 엔터티와 상호 작용하는 엔터티 모든 객체가 일관된 상태를 유지하려면 애그리거트 전체를 관리할 주체가 애그리거트 루트의 역할 식별: 애그리거트를 식별하는 고유한 ID를 가진다. 접근 제어: 외부 엔터티가 애그리거트 내 엔터티에 접근하도록 허용하는 역할을 한다. 변경 관리: 애그리거트 내 엔터티의 변경을.. 2024. 4. 7. Chapter2. 아키텍처 개요 상위 계층에서 하위 계층으로의 의존만 존재하고 하위 계층은 상위 계층에 의존하지 않는다. 1. 표현 영역 (Presentation Layer) 사용자 인터페이스(UI)를 담당 사용자와 직접 상호 작용하며, 시각적 요소와 기능을 제공 예시: JSP, Thymeleaf, React, Vue.js 등 2. 응용 영역 (Application Layer) 비즈니스 규칙을 구현 도메인 모델과 상호 작용하여 사용자 요청을 처리 예시: 서비스 클래스, 유틸리티 클래스 등 @Transactional public void cancel(OrderNo orderNo, Canceller canceller) { Order order = orderRepository.findById(orderNo) .orElseThrow(() ->.. 2024. 4. 5. 이전 1 2 3 4 다음 728x90