묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
여러 개의 일대다 연관 관계 필드를 포함하는, 복잡한 DTO에 대한 최선의 쿼리 구현 방법이 있을까요..?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? - 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? - 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? - 예[질문 내용]안녕하세요! 마치 학교 선배가 옆에서 가르쳐주는 것과 같은 친근한 스타일의 강의 덕분에 백엔드 개발에 좀 더 가까워지는 느낌을 받고 있습니다! 다름이 아니라, 복잡한 구조를 가진 단일 엔티티 조회(DTO 프로젝션) API 개발 관련 질문이 있습니다! class MemberDto { private Long id; private String username; private String imageUrl; // 사용자가 작성한 총 게시물 수 private Long postCount; } // Post와 Hashtag는 다대다 연관 관계 - PostHashtag 중간 엔티티(중간 테이블) 추가 정의 class HashtagDto { private Long id; private String name; } // Post와 Category는 다대다 연관 관계 - PostCategory 중간 엔티티(중간 테이블) 추가 정의 class CategoryDto { private Long id; private String name; } // API로 조회를 제공하려는 대상 - 사용자(Member)가 작성할 수 있는 게시물. class PostDto { private Long id; private MemberDto member; private String title; private String body; private List<HashtagDto> hashtags; private List<CategoryDto> hashtags; } 여러 개(해시태그, 카테고리)의 컬렉션으로 데이터(도메인/엔티티)가 구성돼있을 때,PostDto findById(Long id)위와 같이 ID에 대한 게시물의 상세 정보를 조회하는 리포지토리 계층(PostRepository 같은 클래스)에서의 쿼리 메서드는 강의에서 말씀주신 것을 따르면, (컬렉션에 대한 페치 조인은 1번으로 제한되기에)Post 및 Post와 xToOne 연관 관계인 Member를 페치 조인으로 조회하는 쿼리Post와 xToMany 연관 관계인 모든 Hashtag를 Post.id로 조회하는 쿼리Post와 xToMany 연관 관계인 모든 Category를 Post.id로 조회하는 쿼리n개의 컬렉션이 있을 때 위와 같은 식으로 Post, Member를 제외한 n개의 컬렉션에 대한 n번의 쿼리를 실행해서, 마지막에 Dto로 조립하는 게 최선일까요? 한 방 쿼리(?)를 위해 DTO로 프로젝션하는 방식을 찾아보니, QueryDSL의 transform, groupBy, list 같은 것을 써서 구현한 개발한 블로그가 있긴 하던데, 막상 코드를 실행하니 안 되는 경우가 많더라고요..!실무에서도 위와 같이 여러 복잡한 xToMany 연관 관계 필드가 포함된 DTO를 조회하는 경우가 많을 것 같은데, 주로 어떤식으로 쿼리가 짜여지는지 궁금합니다!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
findByname() 테스트 질문 입니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]강의에서 클레스레벨 테스트를 돌렸을때 findAll() -> findByName() -> save() 를 순으로 실행돼 Member result = repository.findByName("spring1").get(); 오류가 났습니다 findByName()이 루프를 도는건데 hashMap이 순서를 보장하지 않으니깐 true로 나올 수 도 있는걸까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
윈도우 build 경로 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.윈도우 빌드 시 경로가 onedrive\바탕화면\study 폴더인데명령창에서 경로를 찾을 수 없다고 나오는데 어떻게 해야 해결할 수 있을까요?
-
미해결김영한의 실전 자바 - 기본편
static 에러
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]강의에서는 클래스 안에 메서드를 static키워드 없이 만들었을 때 main에서 사용이 가능했는데 왜 제가 작성한 코드에서는 Non-static method 에러가 뜨는건가요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
섹션 3에 대한 질문 (설계? 공부)
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]섹션 3은, 스프링으로 웹개발을 할 때, 서버가 클라이언트에게 어떠한 종류의 응답을 (화면(html) / data) 어떠한 방식으로 생성하여(그냥 html / model과 view로 나누어 동적으로 렌더링 / 객체) 전달할 것인지에 대해 정립된 방식을 소개하는 것으로 이해하였는데 맞을까요? 이러한 정립된 설계 방식? 디자인 방식에 대해 검색해 보니까 디자인 패턴? 아키텍쳐 설계 등 용어도 다양하고, 그 대상(유저-애플리케이션 | 클래스간 관계 | 아키텍쳐 전체 등등)도 다양해 범위가 방대해 보여 당황하였습니다... 수업 내용과는 좀 동떨어지나 혹시 어떤 식으로 이해하고 또 공부하는 것이 좋은지 조언해주실 수 있을까요
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
배열의 길이
섹션7 (기출) 2022년 3회 코드해석 문제 4:55 에서new int[4] 0,1,2,3 4개 맞다고 생각하는데요.for문에서 .length 4하셨는데.. 0~4까지 5번 돈다고 얘기하시고 헷갈려서요.감사합니다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
h2 실행 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 네2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 네3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 네[질문 내용]여기에 질문 내용을 남겨주세요.지금 h2설치하기 강의를 보고 따라하는데 설치까지는 잘 되었지만 실행에서 막혔습니다.h2.bat을 해도 아무반응없이 3초간 로딩되다가 끝나고 다른 곳에서는 "h2.bat"을 해보라고도 해서 해도 안되고 springboot에 맞게 2.xx최신버전을 깔아도 작동이 안되네요. 환경변수의 문제도 아닌거 같고 java -version을 치면 아무것도 안뜨지만 where java를 작성하면 위치는 나와서 java도 깔려있긴 한데 뭐가 문제인지 모르겠네요.
-
미해결자바 코딩테스트 - it 대기업 유제
외부 문제 질문
안녕하세요 강사님 혹시 괜찮으시다면어디선가 봤는데 아직도 기억에 남는 코테 문제가 있습니다.아직도 못풀고 제 머릿속에 남아있는데요 혹시 도움을 주실 수 있으면 감사하겠습니다. 문제는 아래와 같습니다. N에 해당하는 개수의 숫자가 나옵니다 테스트 데이터60 1 -1 2 -2 3첫 줄 N은 0<=200,000 범위수는 음의 정수 , 0 , 양의정수입니다. 위와 같이 숫자가 5개가 나오면 다 처음부터 더하는 것인데 여기서 n개의 수 중 딱 한개를 0으로 변환시킬 수 있습니다. 그랬을 때 0이 최대가 되는 개수가 몇인지 고르는 겁니다. DP 문제인 것 같은데 아직도 해결을 못하겠네요.. 가령 위 데이터에서는 처음은 0이니 0 두번째 1를 더해서 1 세번째 -1를 더해서 0 네번째 2를 더해서 2 다섯번째 -2를 더해서 0여섯번째 3를 더해서 3입니다. 즉 0은 3개인데 여기서 0이 아닌 3개중 하나 아무거나 바꿔도 0의 최대 개수는 4개임으로 답은 4입니다. 이걸 어떻게 풀어나가야 할까요? 혹시 이러한 비슷한 백준문제나 프로그래머스 문제가 있으신가요? 도움 부탁드려요 ㅠㅠ
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
hibernate5JakartaModule 의 이상한 결과에 대해 질문있습니다.
안녕하세요. 강의를 따라@JsonIgnore와 hibernate5JakartaModule 도 빈등록을 진행했습니다.아래 POSTMAN결과를 보면 첫 주문은 연관된 필드( orderItems)가 null로 잘 출력되는 것을 확인할 수 있었습니다. 비록 지금은 null로 출력됐지만 강제지연로딩을 설정하면 주문상품 요소들이 추가로 보여집니다.반면, 두 번째 주문은 주문상품들이 다 보여지고 있습니다.첫 번째 주문처럼 결과가 보여줘야할 것 같은데 말이죠.hibernate5JakartaModule 은 결과를 보장할 수 없는 것인지 궁금합니다.[ { "id": 1, "member": null, "orderItems": null, "delivery": null, "orderDate": "2025-02-21T07:23:38.479148", "status": "ORDER", "totalPrice": 50000 }, { "id": 2, "member": null, "orderItems": [ { "id": 3, "item": null, "orderPrice": 20000, "count": 3, "totalPrice": 60000 }, { "id": 4, "item": null, "orderPrice": 40000, "count": 4, "totalPrice": 160000 } ], "delivery": null, "orderDate": "2025-02-21T07:23:38.663151", "status": "ORDER", "totalPrice": 220000 } ]
-
미해결자바 동시성 프로그래밍 [리액티브 프로그래밍 Part.1]
해당 강의 내용 무단 도용 신고
ReentrantReadWriteLock.wirteLock() 설명 중[읽기 락은 쓰기 락과 독립적으로 소유되므로 영향을 주지 않지만 현재 스레드가 읽기 락도 획득한 상태에서 조건 대기 메서드를 호출하는 것은 사실상 항상 오류이다. 왜냐하면 대기를 해제할 수 있는 다른 스레드도 쓰기 락을 획득하지 못할 수 있기 때문이다.]와 같은 설명이 readLock( ).lock( )을 실행한 상태에서, newCondition( )의 메서드를 사용하면 오류가 발생하는 것인지 궁금하여 구글링을 하던 중 아래와 같은 사이트를 발견하였습니다. https://jaimemin.tistory.com/2411블로그에 들어가보면, 강사님의 자료를 수정없이 모든 내용을 예제까지 포함하여 작성되어 있고, 또한 광고를 붙여 수익을 얻고 있는 것으로 확인되었습니다. 엄연히 지적재산권이 있는 유료 강의를 타인이 무단 도용하여 수익을 창출하고 있는 행태는 도의적으로 아니지 않나 생각이 들어 알려봅니다.
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
Comment Mock 객체의 getDeleted 관련 질문
안녕하세요, 강의 잘 듣고 있습니다. "삭제할 댓글이 자식 있으면, 삭제 표시만 한다." 테스트 코드의 내부에서 commentService.delete(commentId); 가 호출되고, delete의 내부에는 댓글이 이미 삭제 됐는지 확인하는 .filter(not(Comment::getDeleterd)) 필터가 존재하는데, getDeleted에 대한 목 객체의 동작은 따로 선언하지 않는 것일까요? (ex) given(comment.getDeleted()).willReturn(false); 답변 주시면 감사하겠습니다.
-
미해결김영한의 실전 자바 - 중급 2편
링크드 리스트 제네릭도입 질문
링크드 리스트에서 마지막에 제네릭 도입한 코드에서, 정적 중첩 클래스의 생성자의 접근제어자를 public으로 한 이유가 있나요? private로 해도 되죠? 복붙한 코드여서 변경하시다가 놓치신건가요?
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
댓글 최대 2 depth - CUD API 테스트 & 테스트 데이터 삽입 질문입니다.
안녕하세요 강의 잘 듣고 있습니다. 강의랑 버전 맞춰서 실행하고 있는데delete 메서드는 잘 동작하는데 deleted가 계속 0이네요..아래 질문글도 보고 해봤는데 저는 강의 버전이랑 딱 맞춰서 뭐가 문제인지 잘 모르겠습니다!.. 댓글 세 개 다 테스트 해봤는데 테스트는 잘 통과하는데 강의에서는 두번째 댓글부터 Empty Set이라고 나오는데저는 아래 사진처럼 나옵니다..
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
PK 생성 전략의 '유니크 문자열 또는 숫자' 단점 부분 질문있습니다.
안녕하세요. 오늘도 인덱스 관련해서 질문을 들고 왔습니다!(선생님이 "이런것도 질문해? 제발 질문 하지마 제발" 이라고 들 정도의 질문을 하는 학생들이 대부분 실력이 상승 한다고 해서 물음표 살인마가 되기로 했습니다. 지인들한테 강의 마구마구 홍보중입니다.. 한번만 봐주셉요..) 데이터 삽입 필요한 인덱스 페이지가 가득 찼다면 ,B+ tree 재구성 및 페이지 분할로 디스크 I/O 증가정렬된 상태를 유지하기 때문에 삽입시마다 B+tree 재구성으로 인해 정렬로 인한 성능 저하 된다는건 이해가 되었습니다.(맞다면..) 허나 페이지 분할은 잘 이해가 안가네요 ㅠ 페이지 분할에 대해 제가 이해한 바인 아래 내용이 맞는지 궁금합니다.PK가 AUTO_INCREMENT일 경우데이터가 항상 B+ Tree의 마지막(오른쪽 끝)에 삽입됨.하나의 페이지가 꽉 차면, 새로운 페이지가 오른쪽에 생성됨.1. [ Page 1 ] (꽉 참) → 데이터 추가 시 분할 필요 2. [ Page 1 (반) ] → [ Page 2 (새로운 페이지 생성) ] PK가 유니크 문자열 또는 숫자일 경우랜덤한 값이 삽입될 때, 페이지가 꽉 차지 않았더라도 균형을 맞추기 위해 강제적으로 새로운 페이지가 만들어질 수 있음.1. [ Page 1 ] (데이터 60% 차 있음) → 중간에 랜덤 값 삽입 시 균형 유지 필요 2. 균형 유지 과정에서 일부 데이터를 새로운 페이지로 이동하여 분산 3. [ Page 1 (30%) ] → [ Page 2 (새로운 페이지 생성) ] 즉, 유니크 문자열 또는 숫자는 페이지가 “완전히 가득 차지 않아도” 새로운 페이지가 생성될 수'도' 있다.
-
미해결김영한의 실전 자바 - 기본편
멤버 변수 관련 질문
int width;로 선언하는 거랑 int width = 0;으로 선언하는 것에 무슨 차이가 있나요?
-
해결됨[말 한마디로 뚝딱!] AI와 함께 나만의 수익화 웹사이트를 만드는 법
강의 순서
1강부터 차례대로 듣고 있는데 3강부터 막히네요.영상으로만 보면 따라갈수가 없습니다.보니까 3강 이후 강의를 먼저 들어야 진행이 가능한거 같은데,우선순위를 한번 자세히 설명해주시면 좋겠습니다. 그리고, 영상만 봐서 진행이 안되는부분은https://banbu.kr/free/35 해당페이지 순서를 우선적으로 따라해야하는건지도요?
-
미해결김영한의 실전 자바 - 중급 1편
ENUM 문제풀이 2번에서의 static
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? [질문 내용]public static HttpStatus findByCode(int code) { // value(): HttpStatuse의 배열을 반환한다. for (HttpStatus status : values()) { if (status.getCode() == code) { return status; } } return null; }위 코드에서 왜 static으로 받나요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
채번 쿼리 로그
안녕하세요.아래 강의 소스의 내용중 memberService.join메소드를 호출시 em.persist로 인해 select next value 시퀀스값을 가져오는 쿼리를 기대했습니다.@SpringBootTest(classes = JpashopApplication.class) @Transactional public class MemberServiceTest { @Autowired MemberService memberService; @Autowired MemberRepository memberRepository; @Autowired EntityManager em; @Test @Rollback(value = false) public void 회원가입() throws Exception { System.out.println("MemberServiceTest.회원가입"); //given Member member = new Member(); member.setName("kim"); //when Long savedId = memberService.join(member); //then assertThat(memberRepository.findOne(savedId)).isEqualTo(member); } 하지만, 아래 소스 InitDb의 init메소드의 제거 여부에 따라위 시퀀스 채번쿼리가 나타났다 사라졌다 합니다.@Component @RequiredArgsConstructor public class InitDb { private final InitService initService; @PostConstruct public void init() { initService.dbInit1(); initService.dbInit2(); } .... }다른 분들 도 같은 현상을 겪는지 궁금하며 원인을 알고싶습니다.
-
미해결김영한의 실전 자바 - 중급 2편
직접 구현하는 배열리스트3 - 기능추가 편 질문
ArrayList편직접 구현하는 배열리스트3 - 기능추가 편에서16:47초에 강의 자료보면, 순서대로 출력하는 경우에 가장 효율적이라 되어있는데, 무슨말이에요?
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
개발자는 기본기가 중요하다
실무에서 개발좀해보닌깐 느꼇는데 개발자는 기본기가 매우매우매우매우매우중요하다. 갓영한님도 그걸 아시기 떄문에 왜써야하고 어떤문제가있고 그러면 어떻게 해결하고 어떻게 개선하는지를 스텝바이스텝으로 보여주신다. 묻따 기본기룰 챙기고 항상 교차검증을 하는 마인드로 개발을 했으면 좋겟다 -어느 흔한 개발자의 주저리 글-