n + 1 문제를 해결하기 위해 join fetch를 써야 하는걸로 배웠는데 inner join으로 해석이 되는 join fetch를 혹시 한 쿼리 안에서 여러번 쓸때 어떨때는 inner join으로 해석하고 어떨때는 outer join으로 해석하게 설정을 할 수 있나요? (inner join과 outer join을 쓰고 싶은데 join fetch를 여러번 쓸경우 inner join으로만 해석이 됩니다.)
안녕하세요. OrderSearch 클래스가 강의에서는 repository패키지내에 있는데 강의 자료에는 package jpabook.jpashop.domain; 로 되어있어요 보통 실무에서는 OrderSearch같은 검색조건 관련 클래스를 어느 패키지에 두나요? 검색조건 관련된 것들까지 전부 도메인패키지에 넣으면 뭔가 이상한것같기도하고.. 근데 리포지토리는 데이터를 crud하는 용도로만 쓰는것 같아서 여기도 아닌것같고.. 답변 부탁드립니다.
안녕하세요 수업에 맞게 jupyter notebook을 설치하고 실행했는데 오류가 발생합니다. 구글링을 해봐도 찾기가 어려워서 질문남깁니다 도와주세요~~ (askcompany) C:\Dev\askcompany>jupyter notebook [I 15:02:17.522 NotebookApp] Copying C:\Users\skseo/.ipython\nbextensions -> C:\Users\skseo\AppData\Roaming\jupyter\nbextensions Traceback (most recent call last): File "C:\ProgramData\Anaconda3\envs\askcompany\Scripts\jupyter-notebook-script.py", line 10, in <module> sys.exit(main()) File "C:\ProgramData\Anaconda3\envs\askcompany\lib\site-packages\jupyter_core\application.py", line 269, in launch_instance return super().launch_instance(argv=argv, **kwargs) File "C:\ProgramData\Anaconda3\envs\askcompany\lib\site-packages\traitlets\config\application.py", line 845, in launch_instance app.initialize(argv) File "C:\ProgramData\Anaconda3\envs\askcompany\lib\site-packages\traitlets\config\application.py", line 88, in inner return method(app, args, *kwargs) File "C:\ProgramData\Anaconda3\envs\askcompany\lib\site-packages\notebook\notebookapp.py", line 2141, in initialize super().initialize(argv) File "C:\ProgramData\Anaconda3\envs\askcompany\lib\site-packages\traitlets\config\application.py", line 88, in inner return method(app, args, *kwargs) File "C:\ProgramData\Anaconda3\envs\askcompany\lib\site-packages\jupyter_core\application.py", line 244, in initialize self.migrate_config() File "C:\ProgramData\Anaconda3\envs\askcompany\lib\site-packages\jupyter_core\application.py", line 174, in migrate_config migrate() File "C:\ProgramData\Anaconda3\envs\askcompany\lib\site-packages\jupyter_core\migrate.py", line 225, in migrate if migrate_one(src, dst): File "C:\ProgramData\Anaconda3\envs\askcompany\lib\site-packages\jupyter_core\migrate.py", line 129, in migrate_one return migrate_dir(src, dst) File "C:\ProgramData\Anaconda3\envs\askcompany\lib\site-packages\jupyter_core\migrate.py", line 93, in migrate_dir shutil.copytree(src, dst, symlinks=True) File "C:\ProgramData\Anaconda3\envs\askcompany\lib\shutil.py", line 368, in copytree raise Error(errors) shutil.Error: [('C:\\Users\\skseo/.ipython\\nbextensions\\A71A7URN.XLSX', 'C:\\Users\\skseo\\AppData\\Roaming\\jupyter\\nbextensions\\A71A7URN.XLSX', "[Errno 2] No such file or directory: 'C:\\\\Users\\\\skseo/.ipython\\\\nbextensio ns\\\\A71A7URN.XLSX'")]
안녕하세요~!! 이전에 질문 드렸었는데, 제가 드린 질문의 의도가 전달되지 않은것 같아서 다시 질문드립니다. https://www.inflearn.com/questions/679672 종속의 비어 있는 2개의 패키지를 생성하려고 할 경우 생성되지 않습니다. ex) domain>member 패키지 생성하려고 할 경우 (1) domain 패키지 생성 (2) member패키지 생성 시도 (3) 결과물 ->2개의 패키지가 아닌 하나의 패키지가 겹쳐서 생성? domain만들고 빈 dummy파일 만들고 member패키지 만들고 있는데 공부의 질이 떨어집니다 ㅠㅠㅠ intellij cannot create package rename.. 이런식으로 google찾아보는데도 잘 안나와서요~ ㅠㅠㅠ 인텔리제이 도움 부탁드립니다 ㅠㅠ
안녕하세요. dom과 bom의 상관 관계가 궁금해서 질문드립니다. dom은 자바스크립트의 내장객체로 자바스크립트를 이용해서 html의 요소(태그)에 접근이 가능하여 이를 이용해서 html이나 css내용등을 변경가능하게 해주는것으로 이해하고 있고 bom은 역시 자바스크립트의 내장객체로써 웹 브라우저와 관련된 객체의 집합으로서 각각 window, document, location, navigator, history, screen 등등이 정의 되어 있는데 이렇게 되면 bom안에 document 객체가 있음으로서 bom과 dom을 각각 따로 구분할것이 아니라 bom이 dom을 포함하는 개념인지 궁금합니다!
안녕하세요 선생님 경사하강법,오차역전파, 편미분, 잔차에 대한 개념은 이해를 했으나 궁금한점이 있습니다 기계가 예측오류를 줄이기 위해서 w업데이트를 하는 과정이 잘 이해가가 가지 않습니다 예를 들어 가중치들이 초기값 으로 시작했고 나온 출력값과 실제값의 차이가 크면 가중치계수를 줄이고 늘리는 방식이 어떤 과정을 통해서 되는지 아직 잘 이해가 가지 않는데 조금 만 더 쉽게 설명해주실수 있나요? 예) w0 = 1, w1 = 5 - > y_hat = 10이고 y = 15이면 5만 큼의 차이가 발생했는데 여기서 5를 줄이기 위해서 어떻게 w가 업데이트 되는지 이해가 가지 않습니다
당연히 구글링 해보셨져? 원하는 결과를 못찾으셨나요? 어떤 검색어를 입력했는지 알려주세 문제가 발생한 코드(프로젝트)를 Github에 올리시고 링크를 알려주세요. 안녕하세요. 호돌맨님. postService에서 목록 조회하는 단위테스트에 대해서 질문이 있습니다. 먼저 목록 조회 코드부터 보여드리면 postService.findPosts 는 postQueryRepository에 구현체로 만들었습니다. postService @Slf4j @Service @RequiredArgsConstructor @Transactional(readOnly = true) public class PostService { public static final String ENTITY_NAME = "post"; private final PostQueryRepository postQueryRepository; private final PostRepository postRepository; /** * Post 목록 조회 */ public Page<Post> findPosts(PostSearchCondition condition, Pageable pageable) { return postQueryRepository.findPosts(condition, pageable); } } postQueryRepository @Repository public class PostQueryRepository { private final JPAQueryFactory queryFactory; public PostQueryRepository(EntityManager em) { this.queryFactory = new JPAQueryFactory(em); } /** * Post 목록 조회 */ public Page<Post> findPosts(PostSearchCondition condition, Pageable pageable) { List<Post> content = getPostList(condition, pageable); JPAQuery<Long> count = getPostListCount(condition); return PageableExecutionUtils.getPage(content, pageable, count::fetchOne); } /** * Post 목록 */ private List<Post> getPostList(PostSearchCondition condition, Pageable pageable) { return queryFactory .select(post) .from(post) .where( searchCondition(condition.getSearchCondition(), condition.getSearchKeyword()) ) .offset(pageable.getOffset()) .limit(pageable.getPageSize()) .orderBy(post.id.desc()) .fetch(); } /** * Post 목록 카운트 */ private JPAQuery<Long> getPostListCount(PostSearchCondition condition) { return queryFactory .select(post.count()) .from(post) .where( searchCondition(condition.getSearchCondition(), condition.getSearchKeyword()) ); } /** * where searchCondition LIKE '%searchKeyword%' */ private BooleanExpression searchCondition(SearchCondition searchCondition, String searchKeyword) { if (searchCondition == null || !hasText(searchKeyword)) { return null; } if (SearchCondition.TITLE.equals(searchCondition)) { return post.title.contains(searchKeyword); } else if (SearchCondition.CONTENT.equals(searchCondition)) { return post.content.contains(searchKeyword); } else { return null; } } } 다음은 테스트 코드입니다. postServiceTest @ExtendWith(MockitoExtension.class) class PostServiceTest { //CREATE_POST public static final String POST_TITLE = "post_title"; public static final String POST_CONTENT = "post_content"; //UPDATE_POST public static final String UPDATE_TITLE = "update_title"; public static final String UPDATE_CONTENT = "update_content"; //ERROR_MESSAGE public static final String ENTITY_NAME = "post"; public static final Long NOT_FOUND_ID = 1L; public static final String HAS_MESSAGE_STARTING_WITH = "존재하지 않는 "; public static final String HAS_MESSAGE_ENDING_WITH = "id = "; @InjectMocks PostService postService; @Mock PostQueryRepository postQueryRepository; @Mock PostRepository postRepository; private Post getPost(String title, String content) { return Post.createPostBuilder() .title(title) .content(content) .build(); } @Test @DisplayName("post 목록 조회") void findPosts() { //given List<Post> posts = new ArrayList<>(); for (int i = 0; i < 30; i++) { posts.add(getPost(POST_TITLE + i, POST_CONTENT)); } //검색 안먹힘 PostSearchCondition condition = new PostSearchCondition(); condition.setSearchCondition(SearchCondition.TITLE); condition.setSearchKeyword("0"); PageRequest pageRequest = PageRequest.of(0, 10); given(postQueryRepository.findPosts(condition, pageRequest)).willReturn(new PageImpl<>(posts)); //when Page<Post> contents = postService.findPosts(condition, pageRequest); //then assertThat(contents.getTotalElements()).isEqualTo(3); assertThat(contents.getContent().size()).isEqualTo(3); } } 여기서 findPosts 단위 테스트를 진행하려고 하는데요. 목록을 30개를 만들고 검색조건과 페이지 정보를 파라미터로 넘겨서 검색이 된 결과가 나올것이라고 예상했지만 검색조건은 먹히지 않고 30개의 목록만 리턴이 됩니다. 전 검색 조건대로 "0"들어간 title만 검색이되어서 contents.getTotalElements() == 3, contents.getcontent().size() == 3 으로 예상을 했는데 contents.getTotalElements() == 30, contents.getcontent().size() == 30 로 결과가 나와 테스트에 실패하게됩니다. 구글링으로 mockito, page, test, querydsl, parameter 등 다양하게 검색 해봤는데 원하는 결과를 얻기 못해 질문 한번 드려봅니다. 혹시나 제가 잘못된 방향으로 테스트를 진행하고 있는건지 혹은 다른 방법이 있을지 궁금합니다! 깃저장소도 같이 공유드립니다. https://github.com/heechul90/heech-heechlog-server
안녕하세요, 강의 결제하고 필요할 때마다 조금씩 보고 있습니다. 도움이 많이 되어서 감사하다는 말을 우선 전하고 싶었습니다. 제목 그대로 부트캠프 준비, 국비 중 우선순위를 어떻게 정해야할지 조언을 얻고 싶습니다 . 우테코, 싸피를 준비하고 있습니다. 다만 2개 다 각각 코딩테스트가 있으니 국비와 병행이 쉽지가 않더라고요. 원래 계획은 위의 부트캠프를 떨어지면 국비를 할 생각이었습니다. 그러나 2 ~ 3개월의 공백이 무서움 비전공자라 방향을 모르겠음 강제성이 필요했음 1, 3의 이유가 제일 컸습니다. 그래서 언급하신 괜찮은 국비 중 하나를 듣고 있습니다. 선생님도 잘 가르쳐주십니다. 만족스러워요. 그러나 사람이 욕심이 생기더라고요. 붙고 싶습니다. 처음엔 국비와 준비를 모두 잡으려 그랬습니다. 하지만 시간이 없습니다. 우테코가 과제형이어서 더욱 그렇습니다. 지금 준비한다고 국비 진도를 소홀히 해서 따라가기 힘듭니다. 곧 팀프로젝트라 관두고 싶은 마음이 더 커요. 민폐를 끼칠테니까요. 이제 여러 정보를 찾아서 좋은 인강이나 자료들을 보면서 독학할 자신은 있습니다. 무엇보다 강제성이 없어도 알아서 잘 공부하더라고요. 다만 자신감과 별개로 회피성도 있다는 건 사실이니까요. 성급하게 국비를 등록한 게 너무 후회됩니다. 좋은 선생님어서 더 그렇네요. 주변에 조언을 구할 사람이 없어 여쭤봅니다.
회원 등록 조회 둘다 클릭시 화이트페이지가 올라와서 문의 드립니다. 코드 작성은 동일하게 하였습니다만, 다른 타 관련 질문 또한 읽어 보았습니다만, 어디가 문제인지를 찾지를 못하겠어서 문의를 드립니다. https://drive.google.com/file/d/1ivkyBy1T8ivkUEKoOttwHpjXL1Y4nRb3/view?usp=sharing 혹시 몰라 링크를 남깁니다 감사합니다. 학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요.
컴포넌트 스캔과 의존관계 자동 주입 시작하기 강의 부분입니다. 강의 자료를 보면 Autowired로 MemberRepository가 주입 되지도 않은 상태에서 스프링 빈에 인스턴스부터 등록되는 것을 봤습니다. https://www.inflearn.com/questions/656720 이 분의 질문이 제 질문과 동일합니다. 로그를 봐도 인스턴스가 먼저 생성되고 @Autowired는 나중에 수행되던데, 인스턴스가 생성되려면 생성자를 통해야 하는데 유일한 생성자에 @Autowired가 달려 있고, 기본 생성자는 아예 없어서 어떻게 그게 가능한지 궁금합니다. 지금으로서는 ‘스프링이 어떻게든 되게 해주겠지’라고 생각하고 있는데, 이정도 의문은 그냥 넘어가도 된다면 된다고 해주셔도 좋을 것 같습니다. +우연히 발견한 바로는 코드에서 @Autowired를 주석 처리해도 테스트가 정상 동작하던데 이것도 스프링이 알아서 해 주는 부분인가요?