안녕하세요. jpql을 다양하게 짜면서 나가는 sql이 어떻게 되는 지 학습하는 과정에서 질문이 생겨 글 남기게 됐습니다. List<Member> resultList = em.createQuery("select m from Team t join t.members m", Member.class) .getResultList(); for (Member member : resultList) { System.out.println("member.getTeam() = " + member.getTeam().getClass()); } 위와 같이 jpql을 짜면 fetch join이 아니라 일반 join임에도 불구하고 조회한 member들에 대해서 member.getTeam().getName()을 해도 추가 쿼리가 나가지 않습니다. 위의 코드처럼 member.getTeam().getClass()를 통해 확인해보니 아래처럼 결과가 나와 member의 team이 프록시객체가 아니라 실제객체라는 것을 확인할 수 있었습니다. Hibernate: /* select m from Team t join t.members m */ select m1_0.id, m1_0.age, t1_0.id, t1_0.name, m1_0.username from Team t1_0 join Member m1_0 on t1_0.id=m1_0.TEAM_ID member.getTeam() = class jpql.Team member.getTeam() = class jpql.Team member.getTeam() = class jpql.Team fetchType을 분명히 lazy로 했음에도 불구하고 위의 결과처럼 member만을 조회했는데도 불구하고 team까지 조회하는 sql이 나가는 이유가 무엇인가요?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요, 강의를 듣다가 pdf를 보던 중 "참고" 라고 적힌 부분에 ' | ' 이 부분이 글 씨를 침범 하는 사태가 있습니다. 이 강의 다른 pdf 파일도 확인 해보니까 어떤 것은 괜찮고 어떤 것은 사진처럼 이렇게 되어있습니다. pdf파일을 보는 사람이 있다면 불편할 것 같네요. 추가1 "회원 서비스 테스트" 강의 에서 영상에 회원 가입 테스트 에서는 Assertions.assetThat(findMember.getName()).isEqualTo(member.getName()); 이렇게 작성 되어 있는데, 오늘(25.6.12)pdf를 보니 pdf파일 코드 에는 assertEquals(member.getName(), findMember.getName()); 이렇게 되어 있더라고요. 이렇게 하신 이유가 무엇인가요?
안녕하세요. 유사한 질문을 찾아보았으나 의문이 해결되지 않아 질문드립니다. anova 테이블을 만들기 전 적합한 데이터 형태를 만들기 위해 melt 함수를 사용하시더라구요. anova 테이블을 만들 때 필요한 특정한 데이터 형태가 있는건가요? 왜 melt함수를 적용해 주어야 하는지 아직 이해하지 못해서 질문드려요. 답변 기다리겠습니다. 감사합니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 안녕하세요, 영한님, 수업 너무 잘 듣고 있습니다. 수업을 듣던 도중에 아래 내용이 잘 못된 것을 알게 되었는데요. System.currentTimeMillis() 은 1970년대 이후로 경과된 시간을 나타내지만, System.nanoTime() 은 JVM이 시작된 시간으로부터 경과된 시간을 나타냅니다. 즉, System.nanoTime() 은 현재 시간을 나노초로 변하지 않습니다. 이 부분 확인 부탁드려도 될까요? 감사드립니다.
안녕하세요. 영한님 책으로 복습 중에 궁금한 점이 생겼습니다. 117p 에서 merge() 의 동작 과정을 설명하는 내용 중에 아래의 내용이 있습니다. 2. 파라미터로 넘어온 준영속 엔티티의 식별자 값으로 1차 캐시에서 엔티티를 조회한다. 여기서 "준영속 엔티티면 1차 캐시에 당연히 없을텐데 왜 1차 캐시를 조회하지?" 라는 의문이 생겼습니다. 질문1) 어떠한 경우 때문에 1차 캐시를 조회하는 것인가요? 추가로, 119p 에 아래의 내용이 있습니다. 병합은 준영속, 비영속을 신경 쓰지 않는다. ~ 따라서 병합은 save or update 기능을 수행한다. 질문2) save 기능을 하는 경우에 merge() 내부적으로 persist() 로직이 포함되어 있나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요.여태 변수선언하면서 한번도 return 쓴적 없는데 이번 강의에서 sum을 return 해준 이유가 무엇인가요
선생님의 코딩 # LightGBM import lightgbm as lgb lg = lgb.LGBMClassifier(random_state=0, verbose=-1) lg.fit(X_tr, y_tr) pred = lg.predict(X_val) print("lightgbm") print(f1_score(y_val, pred, average='macro')) # 최종 제출 파일 (lightGBM) pred = lg.predict(test) result = pd.DataFrame({'pred':pred}) result.to_csv("result.csv", index=False) 저의 코딩 from lightgbm import LGBMClassifier lg = LGBMClassifier(random_state=0, verbose=-1) model = lg.fit(X_tr, y_tr) pred = model.predict(X_val) pred.shape f1_score(y_val,pred, average='macro') # basic # 0.9257472552209252 pred = lg.predict(test) submit = pd.DataFrame({'pred' : pred}) submit.to_csv('result.csv', index=False) pd.read_csv('result.csv') 여쭙고싶은 것은 선생님께서는 lg.fit을 어떤 변수에 넣지 않고 바로 학습시킨 뒤 그것으로 예측 및 검증을 하고 최종 test 예측까지 수행하시는데, 저는 lg.fit을 model이란 변수에 넣은뒤 예측 및 검증을하고, 최종적으로는 lg로 test 예측을 수행합니다. 혹시 이 차이에서 최종 예측성능에 차이가 생길까요?
교수님 안녕하십니까? 3회 기출유형 (작업형2)를 혼자 풀면서 심사위원분들께서 채점을 할 때, 사용자 코드를 보고 채점 코드를 변경하시는지 혹은 일괄적인 코드로 채점을 하시는지 궁금함이 생겼습니다. 궁금한 점 1) 테스트 데이터값을 예측할 때 -> pred = rf.predict_proba(test)[:,1] 로 하지 않고, -> pred = rf.predict_proba(test) 로 테스트 데이터를 예측한 이후, 아래와 같이 진행하면 심사위원분들이 유동적으로 채점 코드를 변경하시나요? test_index = test.index[:] test_index submit = pd.DataFrame({'index':test_index,'y-pred':pred[:,1]}) submit.to_csv('result.csv',index=False) pd.read_csv('result.csv') ※ 교수님이 주신 채점 코드를 아래와 같이 제 임의로 변경하면 채점이 되는것을 확인했습니다. roc_auc_score(y_test,pred) -> roc_auc_score(y_test,pred[:,1]) ※ 다만, 사용자 데이터를 보지않고 채점 코드를 일괄적으로 적용하면, 정해진 제출형식에 어긋나게 작성해서 0점을 받을까 걱정이되서 문의드립니다!