묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! 스프링 데이터 JPA
getOne vs findById
어떤 경우에 getOne을 많이 활용하나요?
-
미해결스프링 핵심 원리 - 기본편
수강 이후 로드맨 관련 궁금증입니다.
안녕하세요. 마지막 강의에서 로드맵 설명을 해주시긴 했지만 아무래도 현재와 시간이 흐른 상태라 추가된 강의들도 있어서 이후에 어떤 흐름으로 따라갈까 고민중인데.. 사이트에 있는 로드맵은 스프링부트+JPA / 스프링 이렇게 2개로 나누어져 있어서 스프링을 다 하고 스프링부트로 넘어가야 하는건가 하는 약간 혼란스럽네요..최근에 MVC 2편도 나오고 하다보니..더더욱.. MVC 2편의 내용을 보건데... 현재 완강 이후 MVC 1편 -> 추천해주셨던 야생편 -> 이후 MVC 2편 으로 흐름을 따라가도 괜찮을꺼 같은데 이게 맞을까 궁금합니다.
-
미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
listview 랑 recyclerview
게시판 만들 때 listview 말고 recyclerview형식으로는 만들면 안좋나요??? 아니면 상관없나요??
-
미해결실전! 스프링 데이터 JPA
team 조회시 query 관련
영한님 log와 달리, 제가 조회를 했을때는 hibernate가 for문에서 해당 팀을 조회 하는 순서에 따라 select쿼리를 날려서 데이터를 db에서 가져온 후 print해주는데요 영한님 로그에서는 미리 team1,2 를 다 조회하고 그 다음에 출력해주는것으로 보입니다. (여기서 이미 조회해서 영속성 컨텐츠로 만든 것들은 다시 select 쿼리를 날리진 알고요 team 1, 2 의 경우 1번씩만 날림) em.clear해서 캐시를 초기화 했기 때문에, getTeam을 하였을 때, 아래의 결과 처럼 getTeam으로 조회 하려고 할때, hibernate가 select 쿼리를 날리는게 맞다고 보는데 영한님 로그에서는 어떻게 hibernate가 미리 2개를 다 조회할 것을 알고 select문을 먼저 2번 날린 것인지 궁금합니다. System.out.println("============");for(Member member:members){ System.out.println(member); System.out.println(member.getTeam());}System.out.println("============"); ============ Member(id=3, username=member1, age=10) 2021-07-30 05:38:40.449 DEBUG 1508 --- [ main] org.hibernate.SQL : select team0_.team_id as team_id1_1_0_, team0_.name as name2_1_0_ from team team0_ where team0_.team_id=? 2021-07-30 05:38:40.451 INFO 1508 --- [ main] p6spy : #1627591120451 | took 0ms | statement | connection 3| url jdbc:h2:tcp://localhost/~/lecture_datajpa select team0_.team_id as team_id1_1_0_, team0_.name as name2_1_0_ from team team0_ where team0_.team_id=? select team0_.team_id as team_id1_1_0_, team0_.name as name2_1_0_ from team team0_ where team0_.team_id=1; Team(id=1, name=teamA) Member(id=4, username=member2, age=10) Team(id=1, name=teamA) Member(id=5, username=member3, age=10) 2021-07-30 05:38:40.460 DEBUG 1508 --- [ main] org.hibernate.SQL : select team0_.team_id as team_id1_1_0_, team0_.name as name2_1_0_ from team team0_ where team0_.team_id=? 2021-07-30 05:38:40.461 INFO 1508 --- [ main] p6spy : #1627591120461 | took 0ms | statement | connection 3| url jdbc:h2:tcp://localhost/~/lecture_datajpa select team0_.team_id as team_id1_1_0_, team0_.name as name2_1_0_ from team team0_ where team0_.team_id=? select team0_.team_id as team_id1_1_0_, team0_.name as name2_1_0_ from team team0_ where team0_.team_id=2; Team(id=2, name=teamB) Member(id=6, username=member4, age=10) Team(id=2, name=teamB) ============
-
미해결스프링 핵심 원리 - 기본편
테스트 코드에 대해서 질문이 있습니다.
삭제된 글입니다
-
미해결CSS Flex와 Grid 제대로 익히기
display: flex
안녕하세요! 위 강의 내용에서 display: flex만 주면 figure과 div 가 나란히 row 방향으로 배치될 것이라 생각했는데, div의 내용만 보이네요. 이유가 figure의 height가 0이라서 그런건가요? 왜 그런거죠?
-
미해결스프링 핵심 원리 - 기본편
isSameAs 와 isEqualTo 차이
안녕하십니까 테스트 코드 작성 중 궁금한 것이 생겨 질문드립니다. 1. memberService에서 member를 조회하셨는데, 예제여서 그런 것인지, 아니면 만약에 실제 DB를 사용하여 member를 조회한다면 memberService에서 실제로 조회를 하나요?? 저는 memberService가 회원가입을 하고 조회는 Repository에서 해야하는 것 아닐까? 라는 생각이 들었습니다,, 위의 코드가 잘못됐다가 아니라 정말 궁금해서 여쭤보고 싶습니다,, 2. isSameAs vs isEqualTo isSameAs는 same reference, isEqualTo는 equal based on value라고 구글링을 해서 알게되었는데, 여기서 findMember는 객체인데 어떻게 isEqualTo를 해도 되는지 궁금합니다,,
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
이미지 업로드시 오류에 대한 질문이있습니다.
안녕하세요 제로초님 이미지 업로드를 위한 multer / express.static 미들웨어 강의를 듣고 이미지를 업로드했을때 아래와같은 에러가 나옵니다. Error: Failed to parse src "http://localhost:30652021-07-291.13.16_1627577645507.png" on `next/image`, if using relative image it must start with a leading slash "/" or be an absolute URL (http:// or https://) 이러한 에러가 뜨고 제 파일이름이 2021-07-291.13.16_1627577645507.png 입니다.Next.js 버전은 11버전 쓰고있습니다.개인적인 견해로는 앞에 주소로 해당부분이 들어가서 생기는 오류가 아닐까 생각되는데 localhost:3065 검색으로 해결이 안돼서 질문드립니다. 좋은강의 항상 감사합니다! DB에 생성은 됩니다.
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
왜 answer+='#'를 사용하나요???
let answer=""; for(let x of s){ if(x=='A') answer+='#'; else answer+=x; } return answer; } 1. 왜 answer='#'이 아니라 answer+='#'을 해줘야 되는 건가요??? 2. 그리고 +=을 사용하면 answer은 계속 샵 수가 증가하여 #,##,###이런식으로 저장돼서 B#N##N### 이렇게 결과값이 나와야되는거 아닌가요?? 왜 B#N#N#로 결과값이 나오는지 궁금합니다!!
-
미해결웰컴 투 태블로 월드
안녕하세요 !질문있습니다 ㅜㅜ
2분즈음에 측정값을 컨트롤키를 누른상태에서 레이블로 복사해서 넣으면 Discount, Quantity, Sales 값들이 다 제대로 뜨잖아요, 저도 제대로 떴는데 Discount 열만 모두 0으로 뜨네요 ㅠㅠㅠ 왜그럴까요?!
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
해쉬맵
Hashmap으로도 문제가 풀릴 것 같은데 Hashmap으로도 풀 수 있나요? 만약에 풀린다면 Hashmap이 아닌 class를 선택하신 이유는 뭔가요?
-
미해결JIRA를 활용해 더 효과적으로 프로젝트 협업하기
이번단원 질문드립니다.
이번 단원인 (보강) 업무와 프로젝트에 맞게 JIRA 커스터마이징 하기 에는 크게 8개의 주제로 연결되는데 모든강의가 끝난후 이해하려고 하니깐 정리가 되지않습니다. ▶이슈 유형에 따른 원하는 필드 생성하여 화면에 나타내는 방법 1. 이슈 유형 생성 : 원하는 이슈 유형을 만들기 위함. 2. 이슈 유형 구성표 생성 : 이슈 유형의 집합으로 원하는 이슈 유형들로 구성할 수 있다. 3. 사용자 지정 필드 생성 : 1번의 이슈 유형 안의 원하는 필드를 만들기 위함. 4. 스크린(화면) : 2번~3번은 눈에 보이지 않는 설정부분이기 때문에 화면으로 등록해야만 사용자가 볼수 있다. -1~4번 과정은 원하는 이슈유형과 필드를 만들고 이슈 유형별로 어떤 필드를 보여줄지에 대한 껍데기 생성 5. 필드 구성 : 기본필드와 사용자 지정 필드의 상세 기능을 설정 6. 필드 구성 구성표 : 필드 구성의 집합으로 원하는 필드 구성을 추가할 수 있다. -5~6번 과정은 필드 기능을 설정하고 필드의 집합을 구성을 하고 원하는 프로젝트 연결한다 7 화면 구성표 : 4번 만든 스크린이 어느 시점에 이슈와 연결되는지 설정 8. 화면 구성 구성표 : 7번의 결과물과 프로젝트 연결 위와 같이 이해하였는데 생성과 연결 흐름이 딱딱맞아 떨어지는느낌이들지않네요... 혹시 주제별로 연결흐름을 알려주실수 있으실까요?
-
미해결탄탄한 백엔드 NestJS, 기초부터 심화까지
Pipe를 사용하는 사례는 알겠지만 정의는 모르겠어요.
공홈을 보면 파이프는 @Injectable() 데코레이터로 주석이 달린 클래스입니다. 파이프는 PipeTransform 인터페이스를 구현해야 합니다. 라고 쓰여져있습니다. 이 두가지 쓰는 방법을 보면 라우터 핸들러에 인수에서 작동을 하고있는데요. 이렇게 쓰는 방법은 알겠지만, 어떠한 아이인지, 쉽게 정의할 수 있는 문장이 있는지 알고싶어요.또한 요청 -> 필터 -> 파이프 -> 라우트 핸들러 이런식으로 흐름이 흘러가는건가요?
-
미해결초보를 위한 도커 안내서
docker -p 옵션과 Dockerfile의 EXPOSE 차이가 뭔가요?
두 옵션의 차이점이 잘 이해가 되지 않아 질문드립니다..! 저는 Dockerfile에 From nginx:latest COPY index.html /user/share/nginx/html EXPOSE 8000 위와같이 명시한 후 $ docker build -t web:nginx . $ docker run -d --rm --name nginxweb web:nginx 위와같이 실행하였습니다. 그런데 웹에서 접속 확인 시 재대로 접속이 되지 않아서 (페이지 자체에 요청이 되지 않았습니다..) docker ps 로 확인해보니 PORTS 80/tcp, 8000/tcp 와같이 적혀있고 매핑된것처럼 표시되지 않았습니다. 이후 정답지를 보니 docker run -p 옵션을 사용한것을 확인했는데 두 방법의 차이점과 각 어느상황에서 사용하는 건지 궁금합니다!
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
@ModelAttribute관련 질문입니다.
강사님 아래 다른 분들이 올려주신 질문이랑 강사님의 답변을 봤는데도 이해가 가지 않아서 질문을 올립니다.. @ModelAttribute를 붙이면 model.addAttribute의 효과를 얻을 수 있는 것이라는 말씀은 이해가 가는데 보통 @PostMapping에서는 model 객체를 사용하지 않았던거 같은데 updateItem 함수에서는 왜 사용이 되는지랑 아래 캡쳐화면 보시면 @PostMapping("/items/new")public String create(BookForm form) { Book book = new Book(); book.setName(form.getName()); book.setPrice(form.getPrice()); book.setStockQuantity(form.getStockQuantity()); book.setAuthor(form.getAuthor()); book.setIsbn(form.getIsbn()); itemService.saveItem(book); return "redirect:/items";} create 함수도 @PostMapping이면서 redirect:/items로 리턴이 되고 BookForm 객체변수명이 form 인데 왜 여기서는 @ModelAttribute가 안붙는지도 궁금합니다. 그리고 @ModelAttribute가 생략을 해도 되는건지도 궁금합니다. 요약해서 질문 드리면 1. @PostMapping에서는 보통 model 객체를 사용하지 않았던거 같은데 updateItem 함수에서는 왜 사용이 되나요? 2. create함수에서는 왜 @ModelAttribute가 안붙는건가요? 3. @ModelAttribute를 생략을 해도 되는건가요?
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
오류 체크
다음과 같이 코드를 짜면 예시와 같이 정답이 나오는데 왜 오답으로 체크되는지 모르겠습니다.. import sys#sys.stdin = open('input.txt','rt')num_list=[i for i in range(1,21)]for _ in range(10): rg_nums = input().split() start_r = int(rg_nums[0]) -1 end_r = int(rg_nums[1]) rg_list = num_list[start_r:end_r] end_r -= 1 for rg_idx in range(len(rg_list)): num_list[end_r] = rg_list[rg_idx] end_r -= 1for num in num_list: print(num,end=' ')
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
안녕하세요, 판서 프로그램 알고싶습니다.
안녕하세요, 강좌를 수강하고 있는 학생입니다. ^^ 제가 다른 기관에서 아이들을 가르치고 있는데, 사용하시는 판서 프로그램이 좋아보여서... (노션에서 설명하실 때 선 그으면 일정 시간 뒤 사라지는..) 혹시 프로그램을 알 수 있을까요? 감사합니다. ^^
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
@Transacional의 범위에 대해서 궁금한 점이 하나 있습니다!
안녕하세요 강사님. 항상 훌륭한 강의 감사드립니다. 스프링 MVC 1, 2편에서 사용했던 프로젝트에 JPA를 적용시키는 도중 궁금한점이 하나 생겨서 질문드립니다. TestInitData 클래스에 @PostConstruct로 데이터베이스에 초기 데이터들을 넣어두려고 합니다. package com.myservice.web.test;import com.myservice.domain.item.Item;import com.myservice.domain.item.ItemRepository;import com.myservice.domain.member.Grade;import com.myservice.domain.member.Member;import com.myservice.domain.member.MemberRepository;import com.myservice.domain.member.MemberService;import lombok.RequiredArgsConstructor;import lombok.extern.slf4j.Slf4j;import org.springframework.stereotype.Component;import org.springframework.transaction.annotation.Transactional;import javax.annotation.PostConstruct;@Slf4j@Component@RequiredArgsConstructor@Transactionalpublic class TestDataInit { private final ItemRepository itemRepository; private final MemberService memberService; private final MemberRepository memberRepository; /** * 테스트용 데이터 추가 */ @PostConstruct public void init() { itemRepository.save(new Item("itemA", 10000, 10)); itemRepository.save(new Item("itemB", 20000, 20)); itemRepository.save(new Item("itemC", 15000, 15)); Member member1 = new Member(); member1.setLoginId("manager"); member1.setPassword("manager"); member1.setUsername("최한슬"); member1.setGrade(Grade.MANAGER); Member member2 = new Member(); member2.setLoginId("user"); member2.setPassword("user"); member2.setUsername("USER"); //바로 memberRepository.save로 접근하면 현재 스레드에서 사용할 수 있는 EntityManager가 없다고 오류 발생 memberRepository.save(member1); memberRepository.save(member2); //memberService.save -> memberRepository.save로 접근하면 정상적으로 작동 memberService.save(member1); memberService.save(member2); }} 또한, memberRepository와 memberService는 다음과 같습니다. [memberRepository] package com.myservice.domain.member;import org.springframework.stereotype.Repository;import java.util.List;import java.util.Optional;@Repositorypublic interface MemberRepository { Long save(Member member); Optional<Member> findById(Long id); Optional<Member> findByLoginId(String loginId); List<Member> findAll();} package com.myservice.domain.member;import lombok.RequiredArgsConstructor;import org.springframework.context.annotation.Primary;import org.springframework.stereotype.Repository;import javax.persistence.EntityManager;import java.util.List;import java.util.Optional;@Repository@RequiredArgsConstructor@Primarypublic class JpaMemberRepository implements MemberRepository { private final EntityManager em; @Override public Long save(Member member) { em.persist(member); return member.getId(); } @Override public Optional<Member> findById(Long id) { Member member = em.find(Member.class, id); return Optional.ofNullable(member); } @Override public Optional<Member> findByLoginId(String loginId) { Member member = em.createQuery("select m from Member m where m.loginId = :loginId", Member.class) .setParameter("loginId", loginId) .getResultStream() .findAny() .orElse(null); return Optional.ofNullable(member); } @Override public List<Member> findAll() { return em.createQuery("select m from Member m", Member.class) .getResultList(); }} [memberService] package com.myservice.domain.member;import lombok.RequiredArgsConstructor;import org.springframework.stereotype.Service;import org.springframework.transaction.annotation.Transactional;@Service@Transactional@RequiredArgsConstructorpublic class MemberService { private final MemberRepository memberRepository; public void save(Member member) { memberRepository.save(member); }} 현재 MemberService에는 @Transactional이 걸려있고, memberRepository에는 @Transactional 걸려있지 않습니다. 궁금한점은 TestDataInit 클래스의 init() 메서드에서 바로 memberRepository로 접근하게되면 사용할 수 있는 EntityManager가 없다고 나오며, memberService->memberRepository로 접근하게 되면 정상적으로 처리되는 것을 확인하였습니다. 두 방식 모두 결국 memberRepository를 통해 save를 수행하게 되는데 바로 memberRepository의 접근은 오류가 발생하고 memberService를 통한 접근은 정상적으로 처리되는 이유를 모르겠습니다.
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
몽고 cluster 못찾으시는 분들
강의에는 안나오지만 일단 프로젝트를 하나 만들고 Build a Database 누르면 0:56과 같은화면 나옵니다!
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part3: 자료구조와 알고리즘
RightRotate 코드 수정
영상 마지막 부분에서 코드를 수정해주셨지만 수정이 안 된 코드도 있어서 다른 수강생분들께서 참고하시라고 올립니다. Rookiss님이 올려놓으신 샘플 코드에는 수정본으로 올라와있습니다. void BinarySearchTree::RightRotate(Node* y) { Node* x = y->left; y->left = x->right; if (x->right != _nil) x->right->parent = y; x->parent = y->parent; if (x->parent == _nil) _root = x; else if (y == y->parent->left) y->parent->left = x; else y->parent->right = x; x->right = y; y->parent = x; }