30%
61,600원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결실전! Querydsl
springboot가 아닌 spring을 통한 q-type 컴파일
강의에서는 gradle을 통해 q클래스를 컴파일 하셨는데 gradle이나 maven을 둘다 사용하지 않고 있습니다. ant를 사용하고 있습니다. 혹시 관련 설정 방법을 설명해주실 수 있나요??
- 미해결실전! Querydsl
join_on_filtering 테스트 질문이요!!
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용] 안녕하세요! 강의 잘 듣고 있습니다. join_on_filtering()테스트에서 다음과 같이 assertthat으로 검증을 했는데 null이 반환되더군요 ㅠ.. @Testpublic void join_on_filtering(){ List<Tuple> result = queryFactory .select(member, team) .from(member) .leftJoin(member.team, team) .on(team.name.eq("teamA")) .orderBy(member.username.asc()) .fetch(); for (Tuple tuple : result) { System.out.println("tuple = " + tuple); } Tuple member1 = result.get(0); Tuple member2 = result.get(1); assertThat(member1.get(team.name)).isEqualTo("teamA"); 그래서 아래와 같이 수정하여 테스트 해봤는데 잘 동작됩니다. @Testpublic void join_on_filtering(){ List<Tuple> result = queryFactory .select(member, team) .from(member) .leftJoin(member.team, team) .on(team.name.eq("teamA")) .orderBy(member.username.asc()) .fetch(); for (Tuple tuple : result) { System.out.println("tuple = " + tuple); } Tuple member1 = result.get(0); Tuple member2 = result.get(1); assertThat(member1.get(team).getName()).isEqualTo("teamA"); assertThat(member2.get(member).getUsername()).isEqualTo("member2"); 이전에 했던 gruop() 테스트 코드에서는 다음과 같이 assertthat 에서 team.name으로 검증을 했었습니다. @Testpublic void group(){ List<Tuple> result = queryFactory .select(team.name, member.age.avg()) .from(member) .join(member.team, team) .groupBy(team.name) .fetch(); Tuple teamA = result.get(0); Tuple teamB = result.get(1); assertThat(teamA.get(team.name)).isEqualTo("teamA"); assertThat(teamA.get(member.age.avg())).isEqualTo(15);} 어째서 join_on_filtering() 에서는 team.name으로 참조를 하지 못하는것일까요??
- 미해결실전! Querydsl
현재 2:30 부분에 ...
현재 강의의 2:30부분에 fetchResults를 사용하려고 보니 decprecated 되어있는데 fetchResult대신에 쓸수있는 것이 혹시 있나요?? 설명에는 fetch()를 대신 사용하라는데 그런건가요?
- 미해결실전! Querydsl
페이징이나 정렬을 엔티티가 아닌 엔티티의 컬럼에 적용시킬 경우에는 어떻게 해야하나요?
안녕하세요. 질문이 있어서 글을 남깁니다! 만약 여러 팀들을 조회 할 때 페이징과 정렬을 팀들이 아닌 팀 안에 있는 멤버들한테 적용시킬 경우에는 어떤 방식으로 해야 할까요? 저는 팀들을 조회하고 그 팀들에 대한 멤버들을 다 따로 조회하였는데 N+1번의 쿼리가 나가서 비효율적인게 아닌가 하는 생각이 듭니다.
- 미해결실전! Querydsl
컨트롤러에서 Repository DTO를 사용해도 될까요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)안녕하세요. 컨트롤러 구현에 관해 질문이 있습니다. 나중에 @Valid 를 사용해서 검증을 하게 된다면, Repository 레이어의 DTO 에 컨트롤러 레이어의 어노테이션이 들어가게 되는데요. Repository에 정의된 DTO를 컨트롤러 레이어에서 파라미터로 사용해도 되는지가 궁금합니다. 그렇지 않다면, 컨트롤러에서 사용하는 DTO 를 Repository에 정의된 DTO로 변환하는 작업이 필요할 것 같은데요, 영한님이 선호하는 방식은 어떤 방식인가요?
- 미해결실전! Querydsl
Entity Manager 의존관계 주입
안녕하세요! 강의 마지막 부분에 나온 EntityManager, JPaQueryFactory 생성자 주입 관련하여 궁금한 게 생겨서 질의드립니다. Lombok 의 @RequiredArgsConstructor 를 사용해서 EntityManager 와 JPAQueryFactory 를 생성자 주입하면 좋다. 라고 이야기하셨던 부분과 관련된 질의입니다. 이떄 JPAQueryFactory 객체를 빈으로 등록해놓은 뒤에 @RequiredArgsConstructor 를 사용하셨고 이는, EntityManager 는 빈으로 등록되어 있단 뜻인데 애플리케이션 로딩 시점에 EntityManager 도 자동 등록되나요?그렇다면 자동 등록되게 해둔 이유는 무엇인지도 궁금합니다!
- 미해결실전! Querydsl
외부 모듈 Q타입 생성 방법 문의
안녕하세요? 강의 잘 듣고 있습니다. 외부 모듈에 선언되어 있는 엔티티는 어떻게 Q타입을 생성되나요? 가령 한 프로젝트에서 공통으로 사용하는 엔티티 클래스가 별도 모듈로 따로 있을 경우 해당 모듈에 있는 Q타입 생성하는 방법이 궁금합니다. 구글링 해보니 package-info.java에 @QueryEntites를 이용하는 방법이 있던데, 이 방법 말고는 없나요?
- 미해결실전! Querydsl
fetchResults deprecated에 대해서
[질문 내용] intellij 에서 fetchResult가 deprecated 되었다고 해서 찾아보았는데 아래와 같이 fetch()로 받고, size()는 java에서 연산해주는 방식으로 처리해주고 있는데 강의에서 알려주신 fetchResult()가 fetch()에 대해서 가지는 이점이 무엇인지 알 수 있을까요? 또 이렇게 자바에서 count를 해준다면 db로 count query를 추가적으로 작성하는 것보다 db부담이 덜해 효율적이라고 생각되는데 .. 혹시 따로count query가 쓰이는 이유가 있을까요? 감사합니다.
- 미해결실전! Querydsl
여러 인덱스 중 하나를 타게 할 수 없을까요?
안녕하세요.^^ 강의 잘 듣고 열심히 공부 중입니다. jpa + querydsl 공부 도중에 궁금한 것이 하나 생겼습니다. querydsl 에서 여러 인덱스 중에 하나를 강제로 타도록 할 수는 없나요? native query로는 mysql 같은 경우 use index를 쓰면 되는데 querydsl 에는 어떻게 할 수 없을까 무식하게 갑자기 고민하고 고민하다가 혹시 방법이 있나 없나 궁금해서 질문 들여봅니다.
- 미해결실전! Querydsl
SQL Function 관련 (DB : postgresql)
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용] DB는 Postgresql 사용 중으로, .yml 에 아래와 같이 정의했습니다. dialect: org.hibernate.dialect.PostgreSQL10Dialect 사용하고 싶은 것은 날짜별로 Group By 하여 AVG 구하는 것인데요. 아래와 같이 sql 문 작성하였는데 에러가 납니다ㅜㅜ return queryFactory.select(Expressions.dateTimeTemplate(LocalDateTime.class, "DATE_FORMAT({0}, '{1s}')", osMonitorCollection.timestamp, ConstantImpl.create("YYYY-MM-DD")), osMonitorCollection.cpuUtilization.avg()) .from(osMonitorCollection) .groupBy(Expressions.dateTimeTemplate(LocalDateTime.class, "DATE_FORMAT({0}, '{1s}')", osMonitorCollection.timestamp, ConstantImpl.create("YYYY-MM-DD"))) .fetch(); org.hibernate.QueryException: No data type for node: org.hibernate.hql.internal.ast.tree.MethodNode +-[METHOD_CALL] MethodNode: '(' | +-[METHOD_NAME] IdentNode: 'DATE_FORMAT' {originalText=DATE_FORMAT} | \-[EXPR_LIST] SqlNode: 'exprList' | +-[DOT] DotNode: 'osmonitorc0_.timestamp' {propertyName=timestamp,dereferenceType=PRIMITIVE,getPropertyPath=timestamp,path=osMonitorCollection.timestamp,tableAlias=osmonitorc0_,className=com.kt.cloud.redis.monitoring.domain.OsMonitorCollection,classAlias=osMonitorCollection} | | +-[ALIAS_REF] IdentNode: 'osmonitorc0_.os_monitor_collection_id' {alias=osMonitorCollection, className=com.kt.cloud.redis.monitoring.domain.OsMonitorCollection, tableAlias=osmonitorc0_} | | \-[IDENT] IdentNode: 'timestamp' {originalText=timestamp} | \-[QUOTED_STRING] LiteralNode: ''YYYY-MM-DD''
- 미해결실전! Querydsl
compileQuerydsl 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 강의를 처음 듣고 있는 학생입니다 강의 영상에서와 같이 프로젝트를 만든후 compileQueryDsl을 실행하니 Unable to load class 'com.mysema.codegen.model.Type'. 이 에러가 나오면서 컴파일이 되지 않습니다 도저히 답을 찾을 수가 없어서 질문남겨요
- 해결됨실전! Querydsl
Predicate 타입에 관한 질문
predicate Predicate teamNameEq(String teamName) { return hasText(teamName) ? team.name.eq(teamName) : null; } 에서 질문입니다. return타입은 BooleanExpression타입인데 Predicate타입에 받아도 컴파일이 안뜨는 것 같아서 Predicate는 Boolean을 return으로 받는 걸로 알고 있는데 BooleanExpression도 return으로 받나요 ?
- 미해결실전! Querydsl
Slice 질문 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 아니오3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]여기에 질문 내용을 남겨주세요. slice 관련된 질문 이있습니다. slice querydsl에 slice를 사용할 때 id값으로 List<Long> ids = queryFactory.select(entity.id).distinct() .from(entity) .innerJoin(menu).on(menu.store.id.eq(entity.id)) .where( entity.id.lt(cursorId) ) .orderBy(entity.id.desc()) .limit(size) .fetch(); 이렇게 id 값으로 less than 을 사용해서 중복을 제거 하는데, 만약 title 과 같이 order by 가 다양하게 들어가게 되면 중복이 가능한 title로 인해서 pagination 에서 중복 데이터가 불러와 진다고 생각 이듭니다. 이런경우 에는 어떤 식으로 구현 하면 되나요? List<Long> ids = queryFactory.select(entity.id).distinct() .from(entity) .innerJoin(menu).on(menu.store.id.eq(entity.id)) .where( entity.id.lt(eneityData.getTitle()) ) .orderBy(entity.title.desc()) .limit(size) .fetch();
- 해결됨실전! Querydsl
벌크연산 실행순서 질문(확인 질문)
벌크연산 후 em.flush(); em.clear();를 하라는 얘기를 듣다가 갑자기 동작순서에 대해 생각해보게 됐습니다. em.findOne(Long id)로 id = 1, name = "member1"이라는 데이터를 조회하고 "member1"이라는 name을 "회원"로 수정 후, id = 1인 데이터의 name을 "비회원"으로 벌크연산으로 하면(하나만 수정한다고 억지성 가정) Querydsl은 JPQL로 이루어져있으니까 JPQL은 실행 전에 자동으로 em.flush()를 실행하게 되어있으니 벌크연산(Querydsl)이 실행이 되는 순간, em.flush()가 되어 "회원"으로 먼저 수정이 되고 벌크연산 쿼리로 "비회원"으로 바꿔지는 거 맞나요? 맞는 것 같긴 한데 주변에 확인차 물어볼 사람이 없어서 질문드립니다 :[
- 미해결실전! Querydsl
check dirty entity
1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예 [질문 내용]기억이 잘 못 된 것일 수 있습니다. 분명 강의 중에 dirty entity를 확인하는 방법이 Util 혹은 Factory 클래스로 확인 했던 것 같은데 찾을 수가 없어서 문의드립니다.
- 미해결실전! Querydsl
querydsl 쿼리문 관련하여 질문 드립니다.
안녕하세요, 항상 강의 잘 듣고 있습니다. querydsl을 이용하여 view를 활용하여 select할 수 있는 방법이 있을까요?
- 해결됨실전! Querydsl
java: variable em might not have been initialized 오류
@SpringBootTest@Transactionalpublic class QuerydslTest { @Autowired MemberRepository memberRepository; @Test public void dynamic_BooleanBuilder() { String username = null; int age = 10; List<Member> members = memberRepository.searchMemberAll(username, age); for (Member member : members) { System.out.println("member = " + member); } }} MemberRepository를 만들어서 동적쿼리를 테스트하려고 했는데 C:\study\querydsl\querydsl\src\main\java\study\querydsl\repository\MemberRepository.java:21:56 java: variable em might not have been initialized오류가 떴습니다. @Repository@RequiredArgsConstructorpublic class MemberRepository { private final EntityManager em; JPAQueryFactory queryFactory = new JPAQueryFactory(em); public List<Member> searchMemberAll(String username, Integer age) { BooleanBuilder booleanBuilder = new BooleanBuilder(); if (username != null) { booleanBuilder.and(member.username.eq(username)); } if (age != null) { booleanBuilder.and(member.age.eq(age)); } return queryFactory.selectFrom(member).where(booleanBuilder).fetch(); }} 어디가 문제일까요 ? @RequiredArgsConstructor로 em을 초기화했다고 생각하는데.. ;;
- 미해결실전! Querydsl
querydsl 쿼리문 관련질문입니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용]안녕하세요! Querydsl관련해서 여쭤보고싶은게 있는데요 select절에서 count 합수사용시 select절에는 집계함수만 입력가능한가요? ex) select절에 이런식으로도 작성이 가능한가요? .select(new QResponse(aEntity, bEntity.count() , cEntity.count()))
- 미해결실전! Querydsl
get()의 사용에 대한 질문
안녕하세요. Member findMember = memberJpaRepository.findById(member.getId()).get(); 에서, 테스트 할때, get()을 사용하면 안 된다고 강의에서 설명을 하셨는데요. 혹시 올바른 사용에 대해 참조할 문서 링크를 소개해 주실 수 있으신지요? 읽어주셔서 감사합니다.
- 미해결실전! Querydsl
벌크 연산에 대한 질문
안녕하세요. <수정, 삭제 벌크 연산> 강의에서 다음 코드에 대한 질문이 있습니다. @Test public void bulkUpdate() { long count = queryFactory .update(member) .set(member.username, "비회원") .where(member.age.lt(28)) .execute(); em.flush(); em.clear(); List<Member> result = queryFactory .selectFrom(member) .fetch(); for (Member member1 : result) { System.out.println("member1 = " + member1); } } em.flush();를 하는 순간 영속성 컨텍스트에 있던 정보가 DB에 반영되게 되는데, 이렇게 되면 update(member)에서 수정한 DB 정보와 충돌이 발생되지 않나요? 따라서 member.username이 "비회원"으로 수정되지 못 하는 것 아닌지요? 읽어주셔서 감사드립니다.