혼자서 개발새발
저장용) JPA & QueryDsl 쓰는 법
휴일이
2022. 12. 20. 21:56
1. build.gradle 라이브러리 추가
// hibernate 버전 오류 조절하기
ext["hibernate.version"] = "5.6.5.Final"
//JPA
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
//Querydsl
implementation 'com.querydsl:querydsl-jpa'
annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jpa"
annotationProcessor "jakarta.annotation:jakarta.annotation-api"
annotationProcessor "jakarta.persistence:jakarta.persistence-api"
// git에서 Q클래스 지우기
clean {
delete file('src/main/generated')
}
2.
gradle -> Tasks -> bulid -> clean
gradle -> Tasks -> other -> compileJava
Q 타입 생성 확인은
build -> generated -> sources -> annotationProcessor -> java/main
Q 타입 import 불가할 경우
File -> Project Structure -> Modules 에서
annotationProcessor 를 Source 로 변경
3.
Repository 에서
EntityManager / JPAQueryFactory 선언 후
생성자로 주입
(JPAQueryFactory도 Config에서 Bean으로 주입해도 됨)
private final EntityManager em;
private final JPAQueryFactory query;
public MemberRepositoryImpl(EntityManager em) {
this.em = em;
this.query = new JPAQueryFactory(em);
}
4.
Config로 Bean 생성, 주입
@Configuration
@RequiredArgsConstructor
public class QuerydslConfig {
private final EntityManager em;
private final MemberJpaRepository memberJpaRepository;
@Bean
public MemberRepository memberRepository() {
return new MemberRepositoryImpl(em, memberJpaRepository);
}
}
5.
Application에서 import 후 사용
@Import(QuerydslConfig.class)
@SpringBootApplication
public class FanApplication {
public static void main(String[] args) {
SpringApplication.run(FanApplication.class, args);
}
}
6.
BooleanBuilder 생성 후,
조건 추가
query에 집어 넣어서 사용
@Override
public List<Member> findByIdPwd(MemberDto memberDto) {
BooleanBuilder builder = new BooleanBuilder();
builder.and(member.id.like(memberDto.getMemberId())
.and(member.password.like(memberDto.getPassword())));
return query.select(member)
.from(member)
.where(builder)
.fetch();
}
수정할 거 있으면 나중에 수정함
728x90