예를들면 하나의 게시글을 처음 작성하며 여러 태그도 함께 붙이는 내용을 구현할 때 게시글 관련해서 PostService, 태그 관련해서 TagService로 처리를 한다고 가정해보겠습니다. public ResponseEntity(@RequestBody PostRequest postRequest) { Post post = postService.post (postRequest.toPost()); tagService.addTag(postRequest.toTag()); return ResponseEntity ...; } 이런 형태이고 post() 메서드를 통해 게시글을 저장하고 addTag() 메서드를 통해 태그를 저장한다고 할때 서로 다른 서비스 클래스의 메서드에 @Transactional 이 걸려있어서 만약 Post 엔티티를 저장한 후 Tag 엔티티를 저장해야 하는 상황에서 중간에 문제가 발생한다면 Tag는 저장이 안되었지만 Post는 저장이 되는 문제가 발생합니다. 간단하게 상황 설명만을 위해 작성한 예시라 내용이 이상하지만 이런 상황에서 트랜잭션을 한번에 처리할 방법이 있을까요? 결국 하나의 트랜잭션에서 처리해야할것 같아서 위 예시의 경우 postService에서 TagService의 addTag를 호출하는 형태로 하면되지 않을까 고민해 봤습니다. 보통 이런식으로 한번에 처리해야 하는 로직이 여러 서비스 계층에 나누어 있는 경우? 처리를 어떤식으로 하는지 어떤 방법들이 있는지 궁금합니다.
풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, 배포까지) [풀스택 Part3]
명강의 항상 감사드립니다. 공부하는 와중에 이해를 못하는 부분이 있어서, 문의 드립니다. 강의 영상 1분54초 부터 2분 16초까지 입니다. 아래는 말씀하신내용을 그대로 적었습니다. 도커 컴포즈로 한번에 실행한 도커들은 내부 네트웍망이 구축이 되서, 서로 접속을 할수가 있습니다 . 하지만 해당 이미지가 이런 포트를 아예 오픈해 놓지 않는다면 해당 컨테이너로 접속할수 있는 창구가 없겠죠 제가 이해하지 못하는 부분은 도커 컴포즈는 내부 네트워망이 구축이 되서 접속을 할수가 있다 라고 말씀해 주셨는데, 포트를 오픈해 놓지 않으면 접속 할수 있는 창구가 없다라고 말씀을 해주셨습니다. 접속할수 있는데 접속할수 있는 창구가 없다 라는게 이해가 잘안가는데 네트워크로는 접속 할수 있고, 포트로는 접속을 못한다 라고 이해하면될까요?
안녕하세요, 주변별 고객별 연관 상품 추출 sql 구하기 -02 수업 관련해서 질문 드리겠습니다. 해당 쿼리문 결과값 중 'cnt' 열에 해당되는 횟수가 출력이 되는데, 예를 들면 위 사진에 보이는 출력 열 'cnt' 3에 해당되는 user_id 를 알고 싶을 때는 어떤 쿼리를 작성해야되나요?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] assertThrows 메서드를 사용해 주문 취소 테스트 예를 실행하던 중 궁금한 점이 생겨 질문을 남깁니다. 배송 완료 상황일 때는 취소가 되지 않는 예외를 적용한 것에 대해 제가 작성한 테스트인데요. 아래 코드를 통해 말씀드리겠습니다. // given Member member = createMember(); Item item = createBook("JPA", 10000, 10); int orderCount = 2; int curStock = item.getStockQuantity(); Long orderId = orderService.order(member.getId(), item.getId(), orderCount); // when // 배송 완료 상태면 취소가 안됨 Order getOrder = orderRepository.findOne(orderId); getOrder.getDelivery().setStatus(DeliveryStatus.COMP); IllegalStateException e = assertThrows(IllegalStateException.class, () -> orderService.cancelOrder(orderId)); Assertions.assertThat(e.getMessage()).isEqualTo("이미 배송완료된 상품은 취소가 불가능합니다."); // order 취소되는 경우를 가정하고 위에서 테스트했다고 쳤을 때 어떤 상태인지 보고 싶음! System.out.println(orderRepository.findOne(orderId).getStatus()); 아래와 같이 getStatus를 출력해보면 CANCLE이 아닌 ORDER라고 출력이 됩니다. getOrder.getDelivery().setStatus(DeliveryStatus.COMP); IllegalStateException e = assertThrows(IllegalStateException.class, () -> orderService.cancelOrder(orderId)); Assertions.assertThat(e.getMessage()).isEqualTo("이미 배송완료된 상품은 취소가 불가능합니다."); // order 취소되는 경우를 가정하고 위에서 테스트했다고 쳤을 때 어떤 상태인지 보고 싶음! System.out.println(orderRepository.findOne(orderId).getStatus()); 바로 이 부분인데요. assertThrows 내에서 orderCancle을 진행해서 테스트를 진행하는데 왜 주문의 상태가 CANCLE이 아닌 ORDER로 출력이 되는 지 알 수 있을까요? 객체의 얕은 복사, 깊은 복사와 관련이 있는 것인지 궁금합니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 고민하다가 이렇게 하면 될 거 같아서 해봤는데, 런타임 에러가 발생합니다. 논리만 보면, 강사님이랑 비슷한 거 같은데, 완전 잘못간것일까요?? http://boj.kr/34380871ba87499d9065179a1e49a024
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 복습 중 궁금한 것들이 생겨서 질문 드립니다. 1. @Repository 어노테이션을 붙이면 이 클래스는 EntityManager 가 관리하는 클래스가 된다는 걸 의미하나요? 2. @Transactional(readOnly = true) 를 이용하면 영속성 컨텍스트에 관리를 받지 않게 된다고 하는데 이것이 어떤 이점이 있는지 궁금합니다. 3. MemberController 에서는 @Valid 를 사용했는데 ItemController 의 create 메서드에서는 왜 @Valid 를 사용하지 않았는지 궁금합니다.
설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
안녕하세요 맛비님 해당 Code를 Schemetic을 했을 때 Flip Flop을 보고 의문이 생겼습니다. 제가 알기로 D Flip Flop은 입력으로 CLK와 D(입력)를 받아 출력 Q 를 내보낸다고 알고 있습니다. 하지만 schemetic을 띄웠을 때 위와 같이 Filp Flop에 CLK, D 뿐만이 아니라, RST가 붙은 경우도 있고, SET과 RST 둘 모두가 붙은 경우도 봤습니다. Q) SET or RST이 붙어있는 Flip Flop은 D F/F인가요? 아니면 J-K F/F인가요? (J = Set 역할, K = Reset 역할) D F/F에 게이트들이 추가적으로 붙은 D F/F인가요? J-K(S-R) F/F이 아니라면 이유가 무엇인지 궁금합니다. 감사합니다
안녕하세요. 해당 강의를 듣다 궁금한점이 있어 질문드립니다. 질문은 다음과 같습니다..! 5페이지 부분을 강의하실 때 Ax=0(homogeneous linear system)의 solution set은 항상 span {V1, V2, ..., Vp}로 표현된다고 하시고, A는 m by n 행렬, 벡터 V는 R^m 스페이스에 있다고 하셨는데 벡터 V는R^m이 아니라 R^n 스페이스 내에 있는게 아닌지요,,? 언제나 좋은 강의 감사드립니다 ( ◡̉̈ )
안녕하세요, 늘 좋은 강의 감사드립니다. 강의 중 Process=Program 이라고 생각하면 된다고 하셨는데, 하나의 Application Program을 설계 할 때 동시에 수행되어야 하는 task에 대해 multi-process로 동작하도록 할 것 인가 multi-thread로 동작하도록 할 것 인가는 설계자의 선택의 문제인가요? Process=Program 개념으로 생각하면 설계자 입장에서 하나의 Application Program 내에 여러개의 Process를 만드는 것은 불가능 한 것인가? 이렇게 생각이 들기도 하는데 궁금해서 여쭤봅니다.
강의자료 중 >> 회원 조회 API - 인가 << 해당 부분에서 이해가 가지 않는 게 있습니다. 해당 강의 자료에서 아래와 같은 내용이 있는데요. AuthGuard와 GqlAuthAccessGuard는 부모-자식의 관계이고 getRequest 부분만 오버라이딩 한거라고 생각됩니다(요청이 rest-api가 아닌 gql이기 때문에). 그래서 AuthGuard의 기능이 GqlAuthAccessGuard에도 똑같이 있는 거라고 생각되는데 해당 자료에는 GqlAuthAccessGuard가 실행 된 뒤에 AuthGuard가 실행된다고 나와있는데요. 이 부분이 이해가 되질 않네요...
[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part3: 자료구조와 알고리즘
강의 코드대로 중괄호({})로 pos 구조체 변수를 생성, 초기화 하면 항상 Pos{ -1, 0 } >> 이 부분에서 error C2440: 'initializing': cannot convert from 'initializer list' to 'Pos' note: No constructor could take the source type, or constructor overload resolution was ambiguous 에러가 뜹니다. 해결 하긴 했는데 Pos 구조체 안에서 int32 y = 0; int32 x = 0; 로 초기화 시키지 않고 int32 y; int32 x; 로 바꾸니까 바로 되더라구요. 우선 동작은 잘 되는데 혹시 뭐가 문제인건지 알 수 있을까요?