25%
66,000원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결실전! Querydsl
조회질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 user 엔티티 일부 @OneToMany(mappedBy = "user",cascade = CascadeType.ALL)private List<UserCountry> country = new ArrayList<>();@OneToMany(mappedBy = "user",cascade = CascadeType.ALL)private List<UserLanguage> language=new ArrayList<>();@OneToMany(mappedBy = "user",cascade = CascadeType.ALL)private List<UserHopeLanguage> hopeLanguage=new ArrayList<>(); 프로젝트 진행중인데 궁금한점이 있어 여쭤보려고합니다. 엔티티 상에서는 테이블 구성은 일대다 다대일 관계로 위와 같이 되어있고 user들은 모국어인 userCountry, 배우고싶은 언어인 userHopeLanguage, 할수있는언어인userLanguage를 여러개 가질 수있습니다. 전체 유저 조회중 특정 나라나 언어를 가지고 있는 유저들만 검색하기위해 동적쿼리문을 작성하려고 하는데 예를 들어 유저가 가지고있는 userLanguage 중 language이름이 'kor '를 포함하고있는 유저만 검색 한다고 했을 때 쿼리문을 어떻게 작성해야할까요?
- 미해결실전! Querydsl
EntityManager thread-safe 문제
안녕하세요 영한님 !! EntityManager 생성시에, final로 주입받으시거나 @PersistenceContext를 사용해서 주입받으시거나 둘 중에 하나로 코드를 작성하시는 것을 보았는데요!! 제가 알기로는 Entitymanager의 thread-safe하지 않은 문제를 해결하기위해서 @PersistenceContext를 사용하여 프록시 객체로 감싸서 생성함으로써 thread-safe하지 않은 문제를 해결해준다고 알고있었는데요, 그렇다면 final로 주입시에는 프록시 객체로 감싸서 주입받는게 아닌, 진짜 bean을 주입 받기 때문에 thread-safe하지 않다고 봐야할까요?? 감사합니다!! :)
- 미해결실전! Querydsl
벌크 연산 수행후 flush( ) 사용 질문
안녕하세요 강의 잘 듣고 있습니다!^^ 벌크 연산 수행후 영속성 컨텍스트와 DB의 값이 달라지기 때문에 em.flush( ), em.clear( ) 를 해주면 된다고 하셨는데 이미 DB에는 값이 저장 되었는데 flush( )를 해주는 이유가 있을까요? clear( )만 해주면 안되나요?
- 미해결실전! Querydsl
안녕하세요. query에 대해 질문이 있습니다.
안녕하세요. 기존 MyBatis에서는 <where> <if test="name != null and name != ''"> name LIKE concat('%', '#{name}, '%') </if> <if test="loc != null and loc != ''"> OR loc LIKE concat('%', #{loc}, '%') </if> </where> ORDERY BY deptno DESC 이런 쿼리문이 있는데요. 공학이 포함된 이름만 보여주는 걸 짜고 있는데요. 기존 강의에서 conatains()를 하면 like '%member%' 이렇게 된다고 알려주셨는데 이런경우는 contains() 로 하고 or절로 하는게 괜찮을까요? 아니면 where 다중 파라미터로 하는게 나을까요.. 제가 먼저 다중파라미터로 해보고 있는데요. 예제에서는 String usernameParam = "XXX"; Integer ageParam = 10; 이런식으로 한개만 먼저 하셨는데 미리 사전데이터 입력같은 경우는 어떻게 해야될지 모르겠어서 질문드립니다. ㅜ (Test 파일에다가 assertThat 테스트 하려고 미리 넣어둔 데이터 입니다.) @BeforeEachpublic void before() { queryFactory = new JPAQueryFactory(em); Department department1 = new Department("컴퓨터공학과", "103호"); Department department2 = new Department("정보통신공학과", "103호"); Department department3 = new Department("음악과", "104호"); Department department4 = new Department("국어국문과", "104호"); em.persist(department1); em.persist(department2); em.persist(department3); em.persist(department4);
- 미해결실전! Querydsl
JPQL Concat 질문
안녕하세요 선생님! 수업 잘 듣고있습니다 : ) ! 질문이 있습니다. concat 문자열 합치기 처리는 JPQL 문에서 처리 하지 않고 entity column 값을 그대로 가져와서 자바에서도 합치는 처리가 가능할 것 같은데 보통은 어떻게 처리하는게 좋을까요? 저는 공부하면서 뭔가 JPA가 객체지향 SQL을 사용하기 때문에 가능한 데이터를 entity 에 맞춰 그대로 값을 가져오고 자바에서 객체지향처럼 조작해서 처리하는게 것이 재사용성이 있어서 좋다고 생각했는데 실무 경험이 많이 없어서 어떤 기준을 잡아야 할지 헷갈리네요!
- 미해결실전! Querydsl
N+1 문제 예시와 해결법 질문드립니다.
안녕하세요, 영한님. 강의를 통해 많은 것을 배우고 손이 편해지고 있어, 늘 감사하게 생각하고 있습니다. N+1 문제 에 대한 대표적 예제를 여쭤보고 싶어 질문드립니다. N+1 문제에 대해 말씀해 주실 때, fetch Join 을 사용하는 경우 대부분의 N+1 문제를 해결할 수 있다고 하셨는데, fetch Join 을 사용하더라도 해결이 안 되는 N+1 문제의 예제가 궁금해 문의드립니다. 만약 존재한다면, 간단한 해결법도 소개해주실 수 있으신지 여쭤보고 싶습니다.
- 해결됨실전! Querydsl
10:10 bulkUpdate 질문입니다.
안녕하세요! 강의 재밌게 듣고 있습니다. bulkUpdate 부분에서 flush, clear를 하지 않았는데도 업데이트 후의 값으로 나옵니다. hibernate 버전 업데이트의 영향인 걸까요? hibernate 버전은 5.5.10 을 쓰고 있습니다.
- 미해결실전! Querydsl
일대다 collection select 질문
JPA 활용 2강의 - 컬렉션 조회(One To Many) - v3.1 방법으로 ToOne 관계만 fetch join하고, batch_fetch_size 설정했습니다. QueryDsl에서 hospital 엔티티의 id를 통해 원하는 것만 조회하고 싶은데 reviewHospital가 List 형태라서 review.reviewHospitals.hospital.id.eq(id) 이런식으로 안 됩니다. 그래서 생각해낸 게 contain으로 JPAExpression을 이용해서 where 절에 hospital id를 입력해서. 병원에 해당하는 id를 검색했습니다. java.sql.SQLException: Subquery returns more than 1 row 그런데 위와같이 subQuery가 1개 이상이라고 오류가 나더군요. hospital.id에 맞는 여러 개의 Review들을 조회하고 싶은데 다른 방법이 있는지 궁금합니다.
- 미해결실전! Querydsl
선생님은 어떤 방법을 사용하시나요??
@QueryProjection의 단점을 말씀해주셨는데 선생님은 실무에서 어떤 방법을 주로 사용하시나요?
- 미해결실전! Querydsl
Querydsl은 where 조건절에 or 에 null 값이 못 들어가나요?
and는 4개 이상의 조건에서 특정 값이 null이 나오면 알아서 where 절에서 제외를 해주던데 or은 특이하게 nullException 오류가 나옵니다. and만 가능하고 or은 불가능한지 궁금합니다.
- 미해결실전! Querydsl
postgres 관련 공간 쿼리 가능 여부 질문입니다.
안녕하세요. 저는 주로 postgresql 을 사용하는데 공간 데이터 관련 postgis 공간 함수나 postgres의 with recursive 같은 구문을 사용해야 할 일들이 있는데 이런것들도 querydsl 을 사용하면 쓸 수 있을까요? 아니면 이런 것들은 네이티브 쿼리나 jdbc 템플릿, 마이바티스 등등.. 어떤걸 사용하는게 좋을지 궁금합니다.
- 미해결실전! Querydsl
Querydsl의 사용
강의를 듣다가 문득 궁금한 점이 생겨 질문드립니다. 실무에서는 Querydsl을 사용하여 대부분의 쿼리를 작성하나요? 아니면 스프링 데이터 jpa와 조합하여 사용하나요? ex: 스프링 데이터 jpa로 간단히 구현가능한 쿼리는 스프링 데이터 jpa를 쓰고 검색 기능과 같은 동적쿼리가 필요한 부분만 Querydsl을 사용하는지??
- 미해결실전! Querydsl
Projection 과 Tuple의 사용 질문 드립니다.
안녕하세요. 강의내용중 projection과 Tuple사용과 관련하여 질문이 있습니다. 목표 : 아래 코드와 같은 결과값을 가지고 json 응답을 보내주려고 한다면 select (select count(1) from Atable) as totalCnt, (select sum(Atable.column_a))from Atable 질문 : ..........해당 ~ReporitoryImpl 클래스 ...@Overridepublic List<TableDto> info() { return queryFactory .select(new TableDto( Atable.count(), Atable. column_a.sum())) .from(Atable) .fetch();} 위와 같이 TableDto 클래스를 따로 만들어서 원하는 두 값만 projection해서 가져오는게 맞을까요? 그게 아니라면 return 을 List<TableDto>가 아니라 List<Tuple>로 바꾼 후에, queryFactory 코드쪽에서 서브쿼리를 사용하는게 맞을까요? 첫번째 방법을 사용하자니, TableDto를 만들때 해당 테이블의 특정 컬럼만 멤버변수로 사용하는게 아니라서 뭔가 좀 표준이 아닌것 같고, 두번째 방법을 사용하자니, queryFactory의 fetch 결과가 여러개가 나올뿐더러 (물론 limit(1)을 쓰면 되긴하지만...) List<Tuple> 결과값을 Service단에서 받아서 뽑아내서 쓰자니 코드도 길어지고 ,Tuple은 Repository에서만 사용하는게 좋다고 들은것 같아서 이렇게 사용하기 좀 애매해서요. 어떤 방법이 정석인지 궁금합니다. 감사합니다.
- 미해결실전! Querydsl
group by 결과에 대한 질문입니다.
안녕하세요 영한님 강의 재밌게 잘 듣고 있습니다. 간단한 질문이 있습니다~! group by를 한 다음에 Tuple teamA = result.get(0); 으로 알려주셨는데 0번 index로 가져온 결과값이 Team B가 아니라 Team A에 관한 집계 결과를 보장하는지 궁금합니다. (내부적으로 정렬 같은 방식이 일어나는건가요..??ㅎㅎ)
- 미해결실전! Querydsl
복수의 엔티티를 join 할때의 질문입니다.
제목 그대로 만약 member 엔티티와 연관된 엔티티가 team 말고도 group 이라는 엔티티가 있다면 .select() .join(member.team, team) .on(...) .join(member.group, group) .on(...) .fetch(); 처럼 하고 성능 최적화를 위해 team 엔티티만 페치조인 하고자 한다면 해당 조인에만 .fetchjoin() 메서드를 붙이면 되는것이 맞나요?
- 미해결실전! Querydsl
패치조인시 패치조인 대상 entity 검색조건 걸시 값 바인딩이 되지 않음.
아래와 같이 값 바인딩이 되지 않고 있습니다. where customer3_.cu_cph like ? escape '!' where customer3_.cu_cph like '' escape '!';
- 미해결실전! Querydsl
벌크연산 관련 질문드립니다
안녕하세요 강사님. 강의 듣다가 의문점이 하나 있어서 질문드립니다. bulk update 후 동일 트랜잭션 내에서 엔티티를 조회했을때 영속성 컨텍스트에 update 결과가 반영안되는것까진 확인했습니다. 그런데 bulk delete 후에 엔티티를 조회하면 delete 결과가 반영이 되어있더라고요. (27강 12분 25초 delete문을 날린 후 Member 조회시 1개가 나옵니다) 그 이유가 궁금합니다. 결국 벌크연산에서 update문만 조심하면 되는건가요?
- 미해결실전! Querydsl
caseBuilder otherwise
삭제된 글입니다
- 미해결실전! Querydsl
JPAQueryFactory를 필드로 제공하는 경우
new JPAQueryFactory(em)을 굳이 @BeforeEach에 포함시켜야 할까 생각이 들어 코드를 다음과 같이 수정해봤는데요. @AutowiredEntityManager em;JPAQueryFactory queryFactory = new JPAQueryFactory(em);@BeforeEachpublic void before() {// queryFactory = new JPAQueryFactory(em); 그리고 테스트를 실행하면 queryFactory.select(m) 부분에서 NullPointException이 발생합니다. 제 생각에는 EntityManager가 스프링 빈으로 등록되기 전에 new를 통해 JPAQueryFactory를 생성하려 하니 문제가 생겼다고 생각했는데 맞을까요? 아니라면 어떤 이유로 exception이 생기는지 여쭙고 싶습니다:)
- 미해결실전! Querydsl
intelliJ 에서 Q 파일이 아래 그림처럼 생성이 됩니다.
안녕하세요. 강의 여러번 잘 듣고 있습니다. 실무에서 querydsl 을 적용해서 사용해보고 있는데 intelliJ 에서 아래 그림처럼 Q 파일이 생성되는 문제가 있네요. maven clean package 하게 되면 최초는 깨끗하게 생성되는데 코딩을 진행하다 보면 어느 순간에 보면 동일한 이름의 class가 넘버링되서 자동 생성이 되어 버립니다. 혹시 이런 문제 겪어본적 없으신가요?