안녕하세요! 질문이 있습니다 Soft delete 환경에서 UNIQUE를 걸 시, 가상 컬럼을 이용한 해결 방법은 소개되지 않은 이유가 있나요? 가상 컬럼으로 해결하는 방식은 추천하지 않는 방법인가요? 예를 들어, (MySQL) 목표 = Member - email의 unique를 지키는 것 <Member 테이블> 필드 = email, deleted_at, _active_check UNIQUE(email, _active_check) 이때, 가상 컬럼 = _active_check -> _active_check BOOLEAN GENERATED ALWAYS AS ( IF(deleted_at IS NULL, TRUE, NULL) ) VIRTUAL; 이렇게 하면 hello 계정 생성 email = "hello", deleted_at = null, _active_check = true (이때, hello 계정은 다시 INSERT 불가 (UNIQUE(email, _active_check)) hello 계정 soft 삭제 email = "hello", deleted_at= 2025.01.01, _active_check = null hello 계정 다시 생성 email = "hello", deleted_at= 2025.01.01, _active_check = null email = "hello", deleted_at = null, _active_check = true => 결과적으로 UNIQUE 제약이 지켜짐 가상 컬럼을 활용하여, Soft Delete 환경에서 UNIQUE 제약을 지키는 방식은 좋지 않은 방법인가요?
스프링 버전 4.0.2 기준 aspectj 라이브러리 dependency 설정은 다음과 같습니다. (gradle 기준) implementation 'org.springframework.boot:spring-boot-starter-aspectj' 계속 boot-starter-aop 로 빌드 시도했다가 삽질하면서 20분 날렸네요..
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
ddl-auto: create로 설정되어 있어서 자동으로 테이블이 생성되게 되어 있다는 말은 이해가 되는데요. BOOK, USER, USER_LOAN_HISTORY의 테이블 컬럼명과 컬럼의 특성등은 따로 어디에 명시해둬야 참고를 해서라도 만들지 않나요? mysql에서 만들때는 저희가 직접 console창에서 직접 설정해서 create해줬는데, 해당 테이블 구조는 테이블이 생성될때 무엇을 참고해서 만들고 있는건지 문의 드립니다. 감사합니다.
안녕하세요! 강의 정말 재밌게 보고있습니다 궁금한 점이 있습니다 애플리케이션 ENUM을 쓴다고 가정합니다. 이때, (PENDING, 대기중)에서 PENDING만 API로 주면 안되나요? FE에서 PENDING을 보고 "대기중"으로 글씨를 띄우면 안되는 걸까요? 기획자의 요구에 따라서 "대기중"이라는 글씨의 변경 요청을 BE, FE 누가 담당하는게 맞는 건가요?
안녕하세요. 항상 유익한 강의를 제공해 주셔서 감사드립니다. 입문 강의들을 제외한 모든 강의를 수강하며 많은 도움을 받고 있습니다. 다름이 아니라, 개인적으로 Kafka 관련 내용을 공부하던 중 KRaft 모드에 관한 내용이 공식 문서 및 여러 자료에서 업데이트되고 있는 것을 확인하게 되었습니다. KRaft는 Kafka의 아키텍처에서 중요한 변화를 가져온 만큼, 관련 내용을 강의나 추가 자료로 공유해 주신다면 수강생들에게 큰 도움이 될 것 같아 노티 드립니다. 항상 좋은 강의 제공해 주셔서 감사하며, 앞으로도 많은 배움을 기대하겠습니다.
NoSQL은 대규모 분산시스템 환경에서 CAP중에 AP을 주로 선택하는 모델이라 Eventual Consistency모델로 알고 있습니다. 하지만, NoSQL도 서버를 한대만 사용하면 Strong Consistency가 아닌가라는 생각이 들었습니다. 강의에서 설명해주신 NoSQL은 Eventual Consistency모델이다라고 하신거는 일반적인 사용환경이 대규모 분산시스템이기 때문에 Eventual Consistency라고 하신걸까요? 아니면 제가 잘못 생각하고 있는 것일까요?
안녕하세요! 수강자 쵸잉입니다 강의듣다가 질문사항이 생겨 남깁니다. ArticleViewCountRepository 에서 read 메서드 보면 현재 코드에서 조회수 조회를 할때 레디스에서만 가져오는데 이전 강의에서 레디스는 휘발메모리기 때문에 백업용 rdb 를 주기적으로 업데이트 시켰는데 그럼 레디스에서 값이 없을경우 백업용 rdb 도 한번 조회해봐야되지 않나 싶어서 질문드립니다!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] psvm 단축어가 강의와 다르게 나옵니다 어떻게 해야하나요? 인텔리제이 버전이 2025.2.5인데 그래서 다르게 나오는 건지 아니면 vendor를 Eclipse Temurin 21로 설정해서 다르게 나오는 건지 어떤 부분에서 문제인지 모르겠네요
안녕하세요! 기존에 설명해주신 Orchestration 예제의 다이어그램과 호출 순서가 실습 코드랑 다른 것 같아서 질문드립니다. 다이어그램 : 오케스트레이터가 모두 요청/응답 받는 구조. 오케스트레이터 -> 2번 호출/응답 -> 오케스트레이터가 다시 3번 호출/응답 실습코드 : 오케스트레이터가 2번 서비스를 호출하고 2번 서비스가 3번 서비스를 호출하는 형태 질문 1) 위 2개의 내용이 다른 이유가 있을까요? + 오케스트레이션 패턴은 오케스트레이터가 모든 서비스를 호출하고, 다른 서비스는 오케스트레이터에 답변만 해주는 구조이고, 이 때문에 오케스트레이터가 SPOF가 될 수 있다고 이해했는데, 제가 잘못 이해한걸까요? 질문 2) 지금 예제에서는 REST API를 쓰는지, kafka 이벤트는 쓰는 여부 말고는 오케스트레이션/코레오그래피 모두 서비스 1 -> 2 -> 3 호출 하는 시나리오와 보상 처리를 하는 방법이 크게 차이가 없는 것 같습니다 (DLQ외) 예제를 보니까 헷갈리게 되는 것 같은데 제가 어떻게 이해하면 좋을까요? 감사합니다!
안녕하세요. 빅쿼리에서 테이블 생성을 하려고 했으나 계속 실패하여 문의 남깁니다. 파싱 문제가 있는 것 같고, 결제 수단 등록 같은 어드민 문제는 아닌 것 같습니다. 윈도우이고 반디집으로 압축 해제한 뒤 파일 업로드했고 아래와같이 파일 형식도 지정했는데 못 읽는 이유가 있을까요? 감사합니다. 오류 메시지: 테이블을 만들 수 없음: Error while reading data, error message: The Apache Orc library failed to parse file metadata from file tail with error: Not an ORC file File: bigstore/bigquery-prod-upload-us/prod-scotty-455134432611-bde32926-0829-41cc-80fa-43f553dc0a93
1. 현재 학습 진도 2-9부하테스트 2. 어려움을 겪는 부분 강의와 성능차이가 너무 많이나는데 이유가 궁금합니다. 3. 시도해보신 내용 해당 이미지는 제가 수행한 테스트인데, 로컬에서 진행한 동일 코드 인데도 성능차이가 너무 많이 나는데 뭐가 문제인걸까요? 추가적으로 성능개선코드를 적용전인 결과인점 참고부탁드립니다.
안녕하세요 강의 잘보고있어서 감사의 말씀 전하며 질문이 있어 글 남깁니다. 만약 비로그인도 어뷰징 방지 정책을 적용 한다했을때 실무에선 어떻게 처리하나요? IP나 쿠키, User-Agent 등을 활용한다고 하셨는데, IP 주소로 처리하기에는 공유망이나 VPN 같은 다양한 접근 방식도 있을 것 같고 User-Agent 나 브라우저쿠기같은경우는 브라우저에서 조작이 가능하기도하고 Pomsman 같은걸로 요청해서 User-Agent 값을 임의로 설정하는등과 같은 방법으로 집계될수도 있을것같은데 1. 그냥 일반적인 조회수만 집계만 하면되는 서비스에선 어떤식으로 처리하는지 궁금하고 만약 정말 빡세게 어뷰징을 처리한다고했을때 서버쪽에서 고유키값을 만들어서 로그인안한유저면 그 키값을 httponly 쿠키로 설정해서 고유키값이 있을때만 조회수가 집계되는 방법도 있을것 같은데 이런방식은 어떤지도 또 다른 괜찮은 방법이 있는지 궁금합니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 섹션 3 퀴즈 中 3. 자식 테이블을 부모 테이블에 조인할 때, 결과 행의 수는 일반적으로 어떻게 변할까요? 제가 이해한 걸 쿼리로 나타내면, SELECT * FROM [부모 테이블] JOIN [자식 테이블] 이라고 생각했는데, 문제에서 말하는건 SELECT * FROM [자식 테이블] JOIN [부모 테이블] 인건가요?
우선, 제가 가려는 기업에서 원하는 것은 springboot(와 API 계약 이해), bootstrap, postman, WebSocket 사용 이해입니다. 이번년도 9월까지 개인 프로젝트 2개(각 1달)와 팀프로젝트 1개(2달)를 할 생각인데, springboot 학습과 동시에 프로젝트를 진행하기 전에 jdbc를 학습하는 것이 필수적인지 궁금합니다. 제 글에 부족한 부분이 있어서, 이해하기 어려우시면 답변으로 더 필요한 정보를 말씀해주시면 감사하겠습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 안녕하세요 코드를 따라 치는 과정에서 아래와 같이 작성 했더니 BeanCreationException 이 발생하는 것을 확인 할 수 있었습니다. public void dbInit1(){ Member member = new Member(); member.setName("userA"); member.setAddress(new Address("서울", "1", "111")); em.persist(member); Book book = new Book(); book.setName("JPA1 BOOK"); book.setPrice(10000); book.setStockQuantity(100); em.persist(book); Book book2 = new Book(); book.setName("JPA2 BOOK"); book.setPrice(20000); book.setStockQuantity(100); // book2.setName("JPA2 BOOK"); // book2.setPrice(20000); // book2.setStockQuantity(100); em.persist(book2); OrderItem orderItem1 = OrderItem.createOrderItem(book, 10000, 1); OrderItem orderItem2 = OrderItem.createOrderItem(book2, 20000, 2); Delivery delivery = new Delivery(); delivery.setAddress(member.getAddress()); em.persist(delivery); Order order = Order.createOrder(member, delivery, orderItem1, orderItem2); em.persist(order); } 이때 위의 코드에서 주석 처리된 부분처럼 고쳤더니 정상적으로 코드가 실행되는 것을 확인했습니다. 그런데 이게 어떤 문제에서 오류가 발생한건지 정확히 알 수 없어 질문드립니다. 처음에는 book2의 값이 아무것도 없어서 null에 관한 엔터티 제약조건 관련해서 문제가 발생했나 생각해지만 notnull 같은 제약조건이 없었고 Book이 Item과 상속관계이고 싱글 테이블 전략을 사용해서 DTYPE 값이 book2 생성시 자동으로 생성 된다고 기억해서 특별히 값이 비었다고 생기는 오류가 아니라고 생각이 들었습니다. 결론적으로는 정확히 어떤 원인에서 발생한 문제인지 궁금해서 질문 남깁니다.