실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 테스트를 위한 코드로 보이는 fun fixture 라는 생성자 만드는 코드를 엔티티 안에 생성해주셨는데 테스트가 아니면 따로 사용되지 않을 것 같은 코드를 엔티티 단 안에 작성해도 괜찮나요?
학습 관련 질문을 최대한 상세히 남겨주세요! 고민 과정도 같이 나열해주셔도 좋습니다. 먼저 유사한 질문이 있었는지 검색해보세요. 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요! 강의 재밌게 잘 듣고 있는 취준생입니다! 테스트 실행 도중에 데드락이 발생하여 이에 관해 여쭤보고자 합니다. 구체적으로인 상황은 article_view_count 테이블에 존재하지 않는 레코드를 삽입 AND 어플리케이션 실행 후, 첫 테스트 코드 실행 을 만족하는 상황에서 DeadLock 에러가 발생합니다. 아마 Lock 획득실패로 인한 에러가 표출되는것으로 보이며 에러 로그는 하단에 첨부했습니다. 제가 생각한 원인은 다음과 같습니다. UPDATE문임에 따라 해당 레코드에 X-Lock이 걸리며, 100개의 요청마다 UPDATE쿼리가 날라가지만, 첫 INSERT 요청의 트랜잭션이 완료되지 않아 이후의 트랜잭션이 잠금 대기 롤백 첫 INSERT 요청이 오래 걸리는 이유를 알고 싶습니다. 양질의 강의 제공해주셔서 감사합니다! 2025-05-01T19:46:27.647+09:00 WARN 27109 --- [kuke-board-view-service] [io-9003-exec-63] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 1213, SQLState: 40001 2025-05-01T19:46:27.647+09:00 ERROR 27109 --- [kuke-board-view-service] [io-9003-exec-63] o.h.engine.jdbc.spi.SqlExceptionHelper : Deadlock found when trying to get lock; try restarting transaction Hibernate: update article_view_count set view_count = ? where article_id = ? and view_count < ? 2025-05-01T19:46:27.653+09:00 ERROR 27109 --- [kuke-board-view-service] [io-9003-exec-63] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: org.springframework.dao.CannotAcquireLockException: could not execute statement [Deadlock found when trying to get lock; try restarting transaction] [insert into article_view_count (view_count,article_id) values (?,?)]; SQL [insert into article_view_count (view_count,article_id) values (?,?)]] with root cause com.mysql.cj.jdbc.exceptions.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 안녕하세요 switch 문을 사용할 때 default를 사용하는데 이 부분을 사용하는 이유가 궁금합니다. 아마도 int coupon 변수를 선언하고 초기화를 안 하는데 초기화를 위한 목적으로 사용한 걸까요?
학습 관련 질문을 최대한 상세히 남겨주세요! 고민 과정도 같이 나열해주셔도 좋습니다. 먼저 유사한 질문이 있었는지 검색해보세요. 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. [댓글 수 구현] 강의의 마지막에서 페이징 방식 readAll() 메소드에서 commentRepository.count(~)를 이번에 ArticleCommentCount를 활용하여 구현한 count(articleid)로 바꿔도 된다고 말씀하셨는데, 둘이 엄밀히 다르지 않나요?? 기존에 구현한 commentRepository.count(~)는 게시글별 댓글수를 조회하지만 limit가 있고, 이번에 구현한 count(articleId)를 limit 없이 그냥 게시글에 대한 댓글 수를 모두 조회하니 의미가 다르지 않나 싶어서 질문드려봅니다!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 안녕하세요. 수강 중 궁금한 내용이 있어 질문드립니다. 강사님 코드를 보면 private int calculateTotalPrice() { int totalPrice = 0; for (int i = 0; i < itemCount; i++) { Item item = items[i]; totalPrice += item.getTotalPrice(); } return totalPrice; } 처럼 for 문 안에서 Item item = items[i]; 로 새로운 인스턴스를 만드셨는데 문제 풀이를 보기 전 아래와 같이 인스턴스 생성 없이 풀었더니 똑같은 결과가 나왔습니다. private int calculateTotalPrice(){ int totalPrice = 0; for (int i = 0; i < count; i++){ totalPrice += items[i].totalPrice(); } return totalPrice; } 혹시 강사님께서 새로운 생성하신 이유가 따로 있으실까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 퀴즈 기능은 데스크탑 환경에서만 이용 가능해요.다른 수업으로 이동해주세요. 라는 문구와 함께 퀴즈가 안보입니다 (데스크탑으로 강의 이용중인 상태입니다)
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) : 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) : 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) : 예 [질문 내용] LinkedList<Integer>[] buckets = new LinkedList[CAPACITY] 에서 제네릭을 이용한 배열 초기화를 한 이 부분에서 보통 제네릭으로 선언하면 LinkedList<Integer> buckets = new LinkedList<>() 이렇게 생성하는 것으로 아는데, 배열로 만들면 <>()은 생략되는건가요? 배열의 크기만 정하면 되는건가요?궁금해서 질문드립니다.
질문1) 한 트랜잭션 안에서 최초 getReference() 를 통해 가져온 애는 쭉 프록시 객체 로, find() 를 통해 가져온 애는 쭉 일반 객체 로 영속성 컨텍스트에 남는다고 보면 되나요? (두 경우 모두 별도로 영속성 컨텍스트를 비우는 등의 작업을 하지 않는다고 가정) 질문2) 링크1 의 답변에 의하면 영속성 컨텍스트 안에 프록시 객체를 담는 Map 과 진짜 객체를 담는 1차 캐시 가 있는 것으로 이해했습니다. 그럼 find() ( getReference() )는 아래와 같은 흐름으로 동작하는 게 맞나요? 프록시를 담는 Map 을 먼저 조회 (1차 캐시를 먼저 조회) 있으면 프록시 객체를 가져오고 없으면 1차 캐시에서 조회 (있으면 진짜 객체 가져오고 없으면 프록시 담는 Map 에서 조회) 1차 캐시에 있으면 그대로 가져오고 없으면 DB에서 조회 ( Map 에 있으면 그대로 가져오고 없으면 프록시 객체 생성) 질문3) 링크2 의 답변을 통해 프록시 객체는 영속 대상이 아니라고 말씀해주셨습니다. 그렇다면 em.detach(프록시객체); 는 어떻게 이해하면 되나요? detach() 라는 것이 영속 상태인 것을 준영속 상태로 바꿔주는 것인데 프록시 객체는 애초에 영속 대상이 아니라고 말씀해주셔서 헷갈리네요 전에 올렸던 다른 질문들인데요 AI 답변만 달려서 그런데 한번 확인부탁드립니다 https://inf.run/EcpuQ https://inf.run/75Xi1
안녕하세요. 정말 도움을 많이 받고 있습니다. 감사합니다. 항상 앱을 재시작하고 같은 아이디(whiteship)로 회원가입을 하시는데 계속 성공하시는 것 같아서 질문드립니다. 혹시 앱을 재시작하면 회원 목록이 초기화되는 코드가 있으신가요? 제가 놓친 것 같지만 부득이하게 질문드립니다. 감사합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 뭐가 문제일까요 똑같이 타이핑 한 것 같은데 변수 초기화 오류 뜨네요
"Cannot invoke 'jdk.internal.platform.CgroupInfo.getMountPoint()' because 'anyController' is null" 다음과 같은 에러가 발생합니다. Mac Docker Desktop 환경 OpenJDK 17 slim 이미지 사용 로컬에서 진행했을 때 gpt에게 물어봤을 때와 stackoverflow를 확인해봤습니다. 이 에러는 Java 17 이상에서, JVM이 리눅스 컨테이너(CGroup) 안에서 리소스(CPU, 메모리 등) 정보를 가져오려고 할 때, Mac OS 에서는 리눅스 CGroup 시스템 이 아예 존재하지 않아서 발생 그리고 문제를 해결하기 위한 방법으로 프로메테우스를 비활성화하라는 답변을 주었는데, 해결방안을 적용해봐도 해결할 수 없었습니다. 그래서 생각한게 리눅스 컨테이너 이미지인 slim 버전에 대해서 생각하게 되었고, Dockerfile의 이미를 교체했을 때 FROM eclipse-temurin:17-jdk 정상적으로 실습을 수행할 수 있었습니다. 답변보다는 mac에서 진행할 경우 다음과 같은 문제로 머리아플 분들을 위해 작성했습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 강의 할 때 보여주시는 화면은 문서로는 없나요?
[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
localhost:3000 하는데 Home Page 가 안뜨고 Hello world 가 뜨는 이유가 뭔가요 ? 코드팩토리 디스코드에 질문하면 더욱 빠르게 질문을 받아 볼 수 있습니다! [코드팩토리 디스코드] https://bit.ly/3HzRzUM - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
커머스 서비스로 배우는 NestJS 실전 개발 (w. Prisma, Docker, Redis, Kafka)
도커 컨테이너 실행 명령어를 입력했는데 아래와 같은 에러가 발생했습니다. (프리즈마 버전 강의와 동일함) PrismaClientInitializationError: Prisma Client could not locate the Query Engine for runtime "linux-arm64-openssl-3.0.x". This happened because Prisma Client was generated for "darwin-arm64", but the actual deployment required "linux-arm64-openssl-3.0.x". Add "linux-arm64-openssl-3.0.x" to `binaryTargets` in the "schema.prisma" file and run `prisma generate` after saving it: generator client { provider = "prisma-client-js" binaryTargets = ["native", "linux-arm64-openssl-3.0.x"] } // schema.prisma generator client { provider = "prisma-client-js" } datasource db { provider = "postgresql" url = env("DATABASE_URL") }
커머스 서비스로 배우는 NestJS 실전 개발 (w. Prisma, Docker, Redis, Kafka)
안녕하세요. 프리즈마에서 정의한 모델타입을 import 할 때 강의랑 동일하게 아래처럼 입력하면 Module '"@prisma/client"' has no exported member 'cart'. 에러가 발생합니다. schema.ts 파일에는 model cart 로 정의되어있고 npx prisma generate 명령어를 통해 클라이언트 생성도 잘 되었습니다. 서칭해보니 Prisma는 모델 이름을 PascalCase 로 자동 변환한다는데 그래서 그런건가요? 강의와는 버전차이인걸까요? import { cart } from '@prisma/client';