묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
MEMBER테이블에 TEAM_ID컬럼이 생기는 이유
일대다 단방향 연관관계에서,@Entitypublic class Member {@Id @GeneratedValue@Column(name = "MEMBER_ID")private Long id;@Column(name = "USERNAME")private String name;... getter and setter}@Entitypublic class Team {@Id @GeneratedValue@Column(name = "TEAM_ID")private Long id;private String name;@OneToMany@JoinColumn(name = "TEAM_ID")private List<Member> members = new ArrayList<>(); ... getter and setter}Member member = new Member();member.setName("member1");em.persist(member);Team team = new Team();team.setName("teamA");team.getMembers().add(member);em.persist(team); 1-1. @OneToMany @JoinColumn(name = "TEAM_ID") private List<Member> members = new ArrayList<>();를 통해 MEMBER테이블에 TEAM_ID컬럼이 생기는거 같은데, 다른 여러 테이블도 있다고 가정했을때 어떤 이유로 MEMBER테이블에 TEAM_ID컬럼이 생성되는것인가요? @JoinColumn(name = "TEAM_ID")만 보고 MEMBER테이블인지 어떻게 아는것인가요..? List<Member> members 에서 Member라고 지정해줬기때문에 MEMBER테이블에 TEAM_ID컬럼이 생기는것인가요? 1-2 @OneToMany와 @JoinColumn을 통해 일대다 단방향 연관관계나 일대다 양방향 연관관계를 하게되면 무조건 다쪽 테이블에 외래키 컬럼이 추가되는건가요??
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
libs가 없습니다... ㅠㅠ
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]hello-spring파일까지 이동한 후 gradlew.bat을 입력해서 실행했는데요 BUILD SUCCESSFUL이라고 떴습니다. 그 후 cd build해서 들어간 후 dir을 입력하니까 libs라는 폴더는 없네요... 이유가 뭘까요 ㅠㅠ께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용]hello-spring파일까지 이동한 후 gradlew.bat을 입력해서 실행했는데요 BUILD SUCCESSFUL이라고 떴습니다. 그 후 cd build해서 들어간 후 dir을 입력하니까 libs라는 폴더는 없네요... 이유가 뭘까요 ㅠㅠ
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
CommentServiceTest에서 테스트 오류가 나요.
학습 관련 질문을 최대한 상세히 남겨주세요!고민 과정도 같이 나열해주셔도 좋습니다.먼저 유사한 질문이 있었는지 검색해보세요.인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. [문의사항]강사님의 코드 그대로 따라서 하나하나 작성하고, 모든 부분의 설정을 똑같이 했습니다. Comment 테스트 중에 <삭제할 댓글이 자식 있으면, 삭제 표시만 한다.> 는 성공이 되었습니다.그러나 <하위 댓글이 삭제되고, 삭제되지 않은 부모면, 하위 댓글만 삭제한다.> 부분의 테스트를 그대로 따라했는데, mockito.exceptions.misusing.UnnecssaryStubbingException 오류가 납니다.강의 자료로 올려주신 소스코드를 그대로 복사하여 붙여넣기 해도 같은 오류가 납니다. 소스코드와 에러메세지 작성드리며, 같은 환경에서 똑같은 소스코드를 작성했는데 어떻게 오류가 나는지 궁금합니다. 해결 부탁드립니다 ㅠㅠㅠpackage kuke.board.comment.service; import kuke.board.comment.entity.Comment; import kuke.board.comment.repository.CommentRepository; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; import java.util.Optional; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.BDDMockito.given; import static org.mockito.Mockito.*; @ExtendWith(MockitoExtension.class) class CommentServiceTest { @InjectMocks CommentService commentService; @Mock CommentRepository commentRepository; @Test @DisplayName("삭제할 댓글이 자식 있으면, 삭제 표시만 한다.") void deleteShouldMarkDeletedIfHasChildren() { // given Long articleId = 1L; Long commentId = 2L; Comment comment = createComment(articleId, commentId); given(commentRepository.findById(commentId)) .willReturn(Optional.of(comment)); given(commentRepository.countBy(articleId, commentId, 2L)).willReturn(2L); // when commentService.delete(commentId); // then verify(comment).delete(); } @Test @DisplayName("하위 댓글이 삭제되고, 삭제되지 않은 부모면, 하위 댓글만 삭제한다.") void deleteShouldDeleteChildOnlyIfNotDeletedParent() { // given Long articleId = 1L; Long commentId = 2L; Long parentCommentId = 1L; Comment comment = createComment(articleId, commentId, parentCommentId); given(comment.isRoot()).willReturn(false); Comment parentComment = mock(Comment.class); given(parentComment.getDeleted()).willReturn(false); given(commentRepository.findById(commentId)) .willReturn(Optional.of(comment)); given(commentRepository.countBy(articleId, commentId, 2L)).willReturn(1L); given(commentRepository.findById(parentCommentId)) .willReturn(Optional.of(parentComment)); // when commentService.delete(commentId); // then verify(commentRepository).delete(comment); verify(commentRepository, never()).delete(parentComment); } private Comment createComment(Long articleId, Long commentId) { Comment comment = mock(Comment.class); given(comment.getArticleId()).willReturn(articleId); given(comment.getCommentId()).willReturn(commentId); return comment; } private Comment createComment(Long articleId, Long commentId, Long parentCommentId) { Comment comment = createComment(articleId, commentId); given(comment.getParentCommentId()).willReturn(parentCommentId); return comment; } }
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
일대다 매핑 @JoinColumn(name = "TEAM_ID") 질문
@JoinColumn 어노테이션에서 name 속성에 TEAM_ID 넣는 부분이 이해가 가지 않습니다. 이전에 다대일 관계에서는 매핑된 테이블의 필드명을 적는 것으로 알고 있었는데, 현재 속성은 어떤 것을 가리키는 것인지 잘 이해가 되지 않습니다! 데이터베이스 MEMBER 테이블의 외래키를 가리키는 것인가요?
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
좋아요 구현 오류 질문입니다.
학습 관련 질문을 최대한 상세히 남겨주세요!고민 과정도 같이 나열해주셔도 좋습니다.먼저 유사한 질문이 있었는지 검색해보세요.인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요 혼자 해결해 보려고 3일 동안 했는데 해결을 못해서 질문 드립니다.likeAndUnlikeTest() 실행하면이런 오류가 발생합니다..디버깅 해보니여기까지는 되는데 다음에 AopUtils로 넘어가서 구현체까지 넘어가는데 어디 문제인지 모르겠습니다!..이게 테스트 코드이고DB까지 강의랑 똑같이 했습니다,,
-
미해결스프링 핵심 원리 - 고급편
UUID 생성 시 궁금한게 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]강의에서는 UUID를 생성 후 잘라서 썼는데 UUID생성 시점에 자릿수를 정해서 생성할 수는 없나요? 만약 그렇게 할 수 있다면 성능적으로도 이점이 있을까요?
-
미해결실전! Querydsl
코드 다운로드 혹시 어디서 하나요? pdf 자료만 보여서요..
코드 다운로드 혹시 어디서 하나요? pdf 자료만 보여서요..
-
해결됨[말 한마디로 뚝딱!] AI와 함께 나만의 수익화 웹사이트를 만드는 법
화면이 끊겨서 어지러워요
마우스 스크롤이 뚝뚝 끊기며 움직여서 다음번 강의때는 부드럽게 움직이면 좋겠어요... 다음번 강의도 끊기면 보다가 환불할것같네요 중간중간 설명이 생략되어서, 변수가 발생했을때 초보자들에게는 답답하게 느껴질수있을것같아요. 개발자분들에게는 당연하게 느껴질만한 부분들이겠지만,"ai로 코드 한줄 없이"가 강의의 지향점이니까 조금 더 쉽게느껴지도록 설명들을 해주시면 더욱 좋을것같아요강의 주제와 커리큘럼은 너무 좋습니다!
-
미해결김영한의 실전 자바 - 중급 2편
hashCode() 오타? 질문
강의 자료 보면, 전부 다 해시코드 만들 때, Object.hashCode()를 사용한다고 되어있는데, 막상 equals()와 hashCode() 오버라이딩된 것을 보면, Objects인데, 둘은 서로 다른 것 아닌가요? 오타 아닌가요?
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
equals() 사용 시 시간 복잡도 관련 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 강사님 좋은 강의 항상 감사드립니다.해당 문제에서 시간 복잡도 관련 질문이 있습니다!map의 equals() 는 내부적으로 O(n)의 복잡도를 가진 메소드로 알고 있습니다! 내부 구현 코드도 entrySet을 통해서 반복문으로 찾는 과정이 있는 것 같은데요!그렇다면 for문 안에 equals()를 사용할 경우 O(n^2)이 되는 것이 아닌지 질문 드리고 싶습니다! equals가 평균적으로 n 까지 가지 않기 때문에 제외 되는 것일까요?추가적으로 equals() 를 사용하지 않고 풀이를 해봤습니다! 채점을 했을 땐 통과를 하였는데.. 혹시 이 방법에 예외가 있을까요? import java.util.HashMap; import java.util.Scanner; public class Main { private static void solution(String s, String t) { int idx1 = 0; int answer = 0; int cnt = 0; HashMap<Character, Integer> targetMap = new HashMap<>(); for (char c : t.toCharArray()) { targetMap.put(c, targetMap.getOrDefault(c, 0) + 1); } for (int i = 0; i < s.length(); i++) { char key = s.charAt(i); if (targetMap.containsKey(key)) { int value = targetMap.get(key); if (value == 0) { cnt--; } targetMap.put(key, --value); if (value == 0) { cnt++; } } if (i >= t.length()) { char backKey = s.charAt(idx1++); if (targetMap.containsKey(backKey)) { int value = targetMap.get(backKey); if (value == 0) { cnt--; } targetMap.put(backKey, ++value); if (value == 0) { cnt++; } } } if (cnt == targetMap.size()) { answer++; } } System.out.println(answer); } public static void main(String[] args) { Scanner sc = new Scanner(System.in); String s = sc.next(); String t = sc.next(); solution(s, t); } }
-
미해결김영한의 실전 자바 - 중급 1편
catch 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]예외가 터지면서 객체가 생성이 됐지만 참조값 대입을 안했는데 어떻게 catch (NetworkClientExceptionV2 e)에서 참조값을 가지고 있는 건가요?
-
미해결김영한의 실전 자바 - 중급 2편
자료구조, 알고리즘
1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]자료구조, 알고리즘이 재밌어야 할까요? 개발자가 되려면요
-
해결됨실전 jOOQ! Type Safe SQL with Java
Sakila DB 도커 컴포즈 구성 시 팁
MySQL의 기본 데이터 저장 경로는 /var/lib/mysql이므로, 직접 만든 볼륨에 /data 경로가 아닌 /var/lib/mysql을 지정해주셔야 합니다.도커 컴포즈 파일 내 Volumes-top-level-elements 설정 시, sakila_volume: 이하에 external: true를 지정하지 않으면, {project_name}_db-data 인 이름의 볼륨을 찾고 없으면 해당 볼륨을 생성합니다.(예: sakila-mysql_sakila_volume) 따라서 external: true를 지정하거나, name: sakila_volume 을 지정해야합니다.see → https://docs.docker.com/reference/compose-file/volumes/
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
./gradlew clean bulid 오류가 납니다.. 도와주세요..
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용](base) mirae@mirae-MacBookPro jpashop % ./gradlew clean buildStarting a Gradle Daemon, 1 incompatible Daemon could not be reused, use --status for details> Task :testJpashopApplicationTests > contextLoads() FAILEDjava.lang.IllegalStateException at DefaultCacheAwareContextLoaderDelegate.java:180Caused by: org.springframework.beans.factory.BeanCreationException at AbstractAutowireCapableBeanFactory.java:1773Caused by: org.hibernate.service.spi.ServiceException at AbstractServiceRegistryImpl.java:276Caused by: org.hibernate.HibernateException at DialectFactoryImpl.java:1911 test completed, 1 failed> Task :test FAILEDFAILURE: Build failed with an exception.* What went wrong:Execution failed for task ':test'.> There were failing tests. See the report at: file:///Users/mirae/Desktop/study/SPRING_BOOT/jpashop/build/reports/tests/test/index.html* Try:> Run with --scan to get full insights.Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.For more on this, please refer to https://docs.gradle.org/8.5/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.BUILD FAILED in 10s8 actionable tasks: 8 executed(base) mirae@mirae-MacBookPro jpashop %같은 질문에서 해결 방안을 다 따라해봤지만 계속 오류가 납니다.gradlew 버전 8.5 , JDK 버전 21.0.1 이고intel macBook입니다
-
미해결실전 JSP (renew ver.) - 신입 프로그래머를 위한 강좌
코드 임포트시 오류
올려주신 강의 자료에서 6번 코드부터 임포트 했는데 오류가 납니다.
-
해결됨김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
prestartCoreThread()와의 차이점, active 카운트
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요. 해당 강의와 관련된 내용을 학습하던 중에 prestartAllCoreThreads()외에도 prestartCoreThreads()라는 메서드가 존재하는 것을 확인했습니다.제가 인지한 두 메서드의 차이점은 다음과 같습니다.|메서드 |prestartAllCoreThreads()|prestartCoreThreads()| |---------------|------------------------|---------------------| |생성되는 스레드 수 |전체 코어 스레드 수 |1개씩 | |생성된 스레드의 상태|active 아님 |active |여기서 후자의 경우 1개씩 생성한다는 점은 이해가 가는데, 왜 두 메서드의 경우에서 생성한 스레드의 상태가 active냐/아니냐로 차이가 나는지는 모르겠습니다.챗지피티와 이에 대해서 대화를 좀 나눴는데 그 내용도 이해가 되지 않습니다.다수의 스레드가 동시에 getTask()를 호출하면 모두 블로킹 상태가되어 락을 기다리지 않기 때문에 active 카운트가 증가하지 않는다.. 라고 하는데 이해가 가지 않습니다. 실행 결과// case1. 생성된 스레드가 active 상태가 아님 poolExecutor.prestartAllCoreThreads(); printState(executorService); //15:31:40.628 [ main] [pool=1000, active=0, queuedTasks=0, completedTasks=0 // case2. 생성된 스레드가 active 상태임 poolExecutor.prestartCoreThread(); printState(executorService); //15:17:53.579 [ main] [pool=1, active=1, queuedTasks=0, completedTasks=0
-
해결됨자바 동시성 프로그래밍 [리액티브 프로그래밍 Part.1]
instance.getMyField()의 값이 왜 다른가요?
AtomicIntegerFieldUpdater 기본 구현 페이지의 코드에서마지막 System.out.println() 부분을 보면은 new value라고 하고 instance.getMyFiled()를 하고Updated value에도 instance.getMyFiled()를 합니다그런데 옆에 주석에 new value는 42, updated value는 43으로 나오는데 실제로 실행해보니 저는 둘 다 43으로 나오더라구요 표기 오류가 맞는거겠죠?
-
해결됨(2026) 일주일만에 합격하는 정보처리기사 실기
Set 메소드
9:10 set 메서드 없이 or, and 연산자를 써도 중복이 제거되는건가요??
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
업데이트 이후 조회
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]em.find()로 가져온 후 이름을 바꾸고 commit 이전에 em.find()로 똑같은 id의 이름을 조회해서 이름을 확인했을 때 영속성 컨텍스트에서 1차 캐쉬로 조회하기에 바뀐 이름으로 조회되는 것이 맞나요?
-
해결됨김영한의 실전 자바 - 중급 1편
static 사용
package exception.ex; public class NetworkService { public void sendMessage(String data) { String url = "http://example.com"; NetworkClient networkClient = new NetworkClient(url); networkClient.initError(data); String connectResult = networkClient.connect(); if (isError(connectResult)) { System.out.println("[log] 오류 코드: " + connectResult); } else { String sendResult = networkClient.send(data); if (isError(sendResult)) { System.out.println("[log] 오류 코드: " + sendResult); } } networkClient.disconnect(); } private static boolean isError(String resultCode) { return !resultCode.equals("success"); } }오늘 강의 중 작성해주신 코드입니다.isError()를 static method로 잡으신 이유가 궁금합니다.instance method로도 가능할텐데 어떤 의도로 static 여부를 결정해야하는지 팁이 있을까요?