묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! 스프링 데이터 JPA
JPA페이징 공부를 하다가 궁금한점이 있습니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]JPA를 이용한 페이징 처리를 공부하다가 문득 궁금한점이 생겼습니다. Page 및 Slice, Sort의 처리와 더불어 Repository의 기능을 통해서 값을 처리하는것을 배웠는데요.그런데 만약 2개 이상의 테이블을 Join한 상태라면 페이징 처리를 어떤 방법으로 하는지 궁금합니다.예를들어 Page<Member, Order> 이런식으로는 어렵고, 1개의 Repository 안에 직접적인 조인쿼리 방식으로 값을 불러와서 적용해야 할까요?아니면 MappingTable을 이용하거나 Member와 Order라는 조인쿼리에서 실질적으로 보여주는 필드값들만 DTO형태로 만들어서 Page<MemberViewDTO> 이런식으로 적용해야되는것일까요?!아니면 이럴때 적용하는것이 QueryDSL이라는것인지 궁금합니다.(아직 QueryDSL을 배우진 않았고, 들어만 봤습니다.) 2개의 테이블에서 뽑아낸 DB값들을 Page 처리하기위해선 어떠한 방식으로 할 수 있는지 궁금합니다.
-
미해결카프카 완벽 가이드 - 코어편
카프카 서버기동에서 질문있습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 강사님 카프카 서버기동에서 주키퍼와 카프카를 실행한후에 주키퍼부터 내릴경우 카프카 실행이 안되는 이유가 궁금합니다.
-
미해결일주일 완성! 3dsmax 입문 (자동차 및 캐릭터 만들기)
자동차만들기(12) 11:51 단축키 질문
복사해서 오브젝트로 떼어내는거 단축키 어떤걸 사용하셧나요? 저는 알트누르고 드래그하면 모양만 늘어나는데 단축키설정하신걸까요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
컴파일 오류
어떻게 해야할지 모르겠어요 ㅠ 주석 제외 완전 똑같이 적었습니다
-
미해결일주일 완성! 3dsmax 입문 (자동차 및 캐릭터 만들기)
detach 사용하고나서 다시 한 오브젝트로 붙일떄
버텍스가 한 위치에 두개씩생겨서 접합이 안되있는것은 weld말고는 detach하기전 상태처럼 붙이는 방법이 없나요?
-
미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
데이터 불러오기 강의에서 cd
강의에 나온 코드cd/content/gdrive/My Drive/deeplearningbro/pytorch를 하면 오류가 뜨는데 cd 로 경로 변경이 안되나요??NameError: name 'cd' is not defined 가 뜹니다.
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
post 로 id, password 전송시 => 크롬 개발자 도구, 네트워크, Request 에 보면 id, password 가 그대로 노출되는데 숨길순 없나요?
post 로 id, password 전송시 => 크롬 개발자 도구, 네트워크, Request 에 보면 id, password 가 그대로 노출되는데 숨길순 없나요?브라우저를 사용하는 유저가 보낸 거기 때문에 보안을 안해도 상관없을까요?
-
미해결CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조
[오탈자 문의]
안녕하세요 큰돌님! 교재 p.224 페이지교체 알고리즘 NUR 설명에 ~ 0을 찾고 0을 찾은 순간 해당 프로세스로 교체하고라고 되어있는데, 해당 프로세스가 아니라 해당 페이지가 아닌가 해서 질문 남깁니다. 강의 너무 잘 보고 있습니다. 감사합니다~
-
미해결따라하며 배우는 리액트 A-Z[19버전 반영]
redux createStore deprecated....
안녕하세요 강사님 현재 리덕스 공부중에 있습니다.createStore를 쓰려고 했더니 deprecated 메시지가 뜨면서 reactjs/toolkit 패키지의 configureStore 메서드를 쓰라고 합니다. 이렇게 공부한 함수가 deprecated 되거나 잘 쓰지 않는 함수 일때는 그래도 redux를 이해하는데 기본이 되는 함수이니 계속 공부를 해야 되나요? 아니면 새로운 메소드를 공부해 보는 편이 좋나요??
-
해결됨나도코딩의 자바 기본편 - 풀코스 (20시간)
eclipse
안녕하세요. 맛보기 강의를 듣고 수강권을 구매하여 제대로 학습해 보려는 학생입니다.강의를 보니 인텔리제이로 수업이 이루어지던데 이클립스만으로도 어려움 없이 학습할 수 있을까요?? 원래 이클립스를 사용했다 보니 큰 차이가 없다면 이클립스로 공부하고 싶어서요...!
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
gradlew build 실패
gradlew build시 위와같이 fail이 뜨고 dir봤을땐 build가 없는데 어떻게 해야하나요?
-
해결됨Vue.js 끝장내기 - 실무에 필요한 모든 것
json 도 eslint autofix 가 되나요?
json 도 eslint autofix 가 되나요? { "language": "json", "autoFix": true } 이런식으로 세팅해봤는데 안되네요
-
미해결스프링 배치
Repositoryitemreader로 조회한 데이터 dirty check 여부 질문
안녕하세요~ 강사님 강의를 보고 스프링 배치 입문해서 열심히 이론부터 실습까지 잘 배우고 있습니다.몇 가지 궁금한 점이 있어서 이렇게 질문을 드리게 되었습니다.1.ItemReader 중에 Repositoryitemreader라는 구현체가 있어서 이게 Spring Data JPA를 지원해 줘서 사용해 보았는데요. 이해가 가지 않는 부분이 있어서 질문드리고자 합니다. @Bean(name = STEP_NAME) @JobScope public Step step1(@Value("#{jobParameters[chunkSize]}") Long chunkSize) { return stepBuilderFactory.get(STEP_NAME) .<HistoryEntity, HistoryEntity>chunk(chunkSize.intValue()) .reader(itemReader(null)) .processor(itemProcessor()) .writer(itemWriter()) .build(); } @Bean(name = JOB_NAME + "_reader") @StepScope public RepositoryItemReader<HistoryEntity> itemReader(@Value("#{jobParameters[chunkSize]}") Long chunkSize) { LocalDateTime now = LocalDateTime.now(); return new RepositoryItemReaderBuilder<HistoryEntity>() .name(JOB_NAME + "_reader") .repository(HistoryPagingCrudRepository) .methodName("findByLeaveDtLessThanEqual") .pageSize(chunkSize.intValue()) .arguments(List.of(now)) .sorts(Collections.singletonMap("leaveDt", Sort.Direction.DESC)) .build(); }위와 같은 step과 특정 날짜의 데이터를 조회하는 ItemReader를 구현한 후 아래 ItemWriter 에서 @Bean(name = JOB_NAME + "_writer") @StepScope public ItemWriter<HistoryEntity> itemWriter() { return item -> { item.forEach(historyEntity -> { // Id 값을 null로 만드는 메소드 historyEntity.updateRemoveId(); } ); }; }Entity의 값을 변경하게 되면 당연히 하나의 chunk 단위에서는 하나의 트랜잭션 이기 때문에 JPA의 dirty check로 인한 Id 값을 지우는 update 쿼리가 나갈거라고 생각했는데 그렇지 않더라고요.다만, @Bean(name = JOB_NAME + "_writer") @StepScope public ItemWriter<HistoryEntity> itemWriter() { return item -> { item.forEach(historyEntity -> { // Id 값을 null로 만드는 메소드 historyEntity.updateRemoveId(); historyPagingCrudRepository.save(historyEntity) } ); }; }위 코드 historyPagingCrudRepository.save(historyEntity) 를 추가하면 merge가 진행되면서 update 쿼리가 실행되긴 하지만 select 쿼리가 한 번 더 실행돼서 비효율적인거 같다는 생각이 들었습니다.질문을 정리하자면 ItemReader에서 조회한 Entity가 ItemWriter에서도 영속 상태이기 때문에 Dirty Checking 대상이라고 생각했는데 그렇지 않은 이유가 무엇인가요??혹시 ItemReader 로 데이터 조회 후 ChunkProvider를 통해 Chunk<I> 를 itemProcessor 또는 ItemWriter로 전달하는 과정에서 준영속 상태가 되는것일까요?? 2.jpaPagingItemReader 으로 데이터 조회 후, ItemWriter 에서 jpaPagingItemReader 의 where 절에 해당하는 컬럼의 값을 수정했을 때 offset(page)로 인해 일부 데이터가 읽히지 않는 문제가 있는것으로 알고있습니다. 이 경우 getPage() 메소드를 override 해서 항상 offset을 0으로 고정시키는 방법으로 해결이 가능한데 Repositoryitemreader 구현체 사용 시 어떤식으로 해결이 가능할까요??
-
미해결호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)
테스트 코드 작성시
회원가입 기능을 구현할 때 컨트롤러에는 다음과 같은 코드가@PostMapping("/signup") public void signup(@RequestBody @Valid MemberSignup memberSignup) { memberService.signup(memberSignup); }서비스에는 다음과 같은 코드가@Transactional public void signup(MemberSignup memberSignup) { if (validateDuplication(memberSignup)) { throw new NameDuplicateException(); } Member member = new Member(memberSignup); memberRepository.save(member); }있다고 할 때 컨트롤러 테스트에서는 @Valid로 인한 실패와 회원 가입 성공 정도만 보여주고 중복 검증은 서비스 테스트에서 하면 되나요?아니면 컨트롤러에서도 모두 테스트하는 것이 좋은 방법인가요?단위 테스트를 만드는 것이 좋다고 들었는데 테스트 코드가 너무 무거워 지는 것 같아서 질문드립니다.감사합니다!
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
프로퍼티 관련 질문입니다
프로퍼티를 사용하는 것과 사용하지 않는 것의 차이점은 조건을 설정할 수 있다와 설정할수 없다 이외에 차이점이 있나요? 그러한 차이점이 없다면 성능상 비효율적인 프로퍼티인 public int Hp { get; set; };대신 public int hp; 로 구현하는게 더 효과적일거라고 생각했는데 이때에도 프로퍼티를 사용할만한 이유가 있을까요?
-
해결됨[코드캠프] 훈훈한 Javascript
return에 대해 질문있습니다!
안녕하세요?return에 대해 질문 있습니다!위는 선생님께서 작성하신 코드인데 마지막에setClearInterval(); return;이 부분을 아래와 같이 써도 되나요?return setClearInterval();
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1012번 질문 있습니다!
#include<bits/stdc++.h> using namespace std; int a[51][51], visited[51][51], t, m, n, k, x, y; const int dy[] = {-1, 0, 1, 0}; const int dx[] = {0, 1, 0, -1}; void dfs(int y, int x) { visited[y][x] = 1; for(int i=0; i<4; i++) { int ny = y + dy[i]; int nx = x + dx[i]; if(ny<0 || ny>=n || nx<0 || ny>=m) continue; if(!a[ny][nx]) continue; if(visited[ny][nx]) continue; dfs(ny, nx); } return; } int main() { cin >> t; while(t--) { fill(&a[0][0], &a[0][0] + 51 * 51, 0); fill(&visited[0][0], &visited[0][0] + 51 * 51, 0); int cnt = 0; cin >> m >> n >> k; for(int i=0; i<k; i++) { cin >> x >> y; a[y][x] = 1; } for(int i=0; i<n; i++) { for(int j=0; j<m; j++) { if(a[i][j] == 1 && visited[i][j] == 0) { dfs(i,j);cnt++; } } } cout << cnt << '\n'; } return 0; } if(!a[ny][nx]) continue; if(visited[ny][nx]) continue;이렇게 했을 때 주어진 테스트 케이스는 정답이 나오거든요? 백준 사이트에선 오답이 나오더라구요 선생님이 올려주신 코드랑 차이점이 뭔지 궁금합니다.
-
해결됨스프링 핵심 원리 - 기본편
Provider
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요.안녕하세요. 계속 고민하다가 너무 헷갈려서 질문남깁니다.MyLogger로 인해 Spring app을 작동 error가 난 것을 ObjectProvider를 이용하여 해결한다고 했습니다. 그래서 교안에선 objectProvider.getObject()를 호출하는 시점까지 request scope 빈의 생성을 지연하여 문제를 해결했다고 했습니다.원래 제가 알기론 spring container가 생성될때 1) 빈 생성과 2) 의존관계 주입 2가지를 수행해야되는데 ObjectProvider로 인해 getObject() 호출될때 까지 1) 빈 생성 2)의존관계주입을 대기를 한다는 뜻인가요?여기서 또 드는 의문이 ObjectProvider가 DL의 역할을 하는 것으로 알고 있어서 빈을 일단은 container에 찾아서 줘야 한다고 추론했습니다. 그러니깐 교안에서 말한 빈 생성 지연한다는 부분이 이해가 가질 않았습니다.그래서 현재 1.과 2.의 개념적인 부분에서 혼돈이 와서 어떤 개념을 놓쳤는지 알고 싶습니다. 감사합니다.
-
미해결홍정모의 따라하며 배우는 C언어
처리되지 않은 예외가 throw됨: 쓰기 액세스 위반입니다.
섹션 4.4의 예제를 그대로 따라해보았더니#include<stdio.h> int main() { char* str5 = (char*)malloc(sizeof(char) * 100); str5[0] = 'H'; str5[1] = 'E'; str5[2] = 'L'; str5[3] = 'L'; str5[4] = 'O'; str5[5] = '\0'; printf("%zu %zu\n", sizeof(str5), strlen(str5)); return 0; }str5[i]로 배열을 선언하는 부분에서 오류가 납니다. 어떻게 해결해야할까요?
-
미해결AWS(Amazon Web Service) 입문자를 위한 강의
강의 업데이트 질문
안녕하세요! 방금 강의 구매한 학생입니다.강의 업데이트 관련하여 질문드립니다!Q. 현재 강의 업데이트 어디까지 되어있는지 궁금합니다!Q. 업데이트 되지 않은 강의도 전부 업데이트 예정이신지 궁금합니다!