인프런 커뮤니티 질문&답변

huk님의 프로필 이미지

작성한 질문수

실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)

39강. Querydsl 사용하기 - 두 번째 방법

querydsl 에서 insert 질문입니다.

해결된 질문

24.06.20 14:15 작성

·

141

1

안녕하세요 최태현님 좋은강의 만들어주셔서 감사합니다.

제가 jpa 에서

querydsl 로 변환하려고 하는데요

( 둘다 이번프로젝트에 처음 써봅니다.)

기존 jpa repository

interface BusinessCardRepository : JpaRepository<BusinessCard, Long>

해당repository 가 있다고 가정했을때

@Component

class BusinessCardRepository(

private val queryFactory: JPAQueryFactory

)

querydsl 전환을위해 해당 component 로된 repository 를 만들었습니다.

그래서 기존 select 로된것들은 모두

querydsl 로 수정했는데

기존 save 했던건 어떻게 수정해야할지 난감합니다.

39강강의 Querydql 사용하기에보면

bookRepository: BookRepository,

bookQueryRepository : BookQueryRepository

두개다 사용하셨더라구요?

그래서 저도 별도로 두개를 사용하려다가 두개로 사용하는게 맞는지 여쭈어봅니다.

제가만든 BusinessCard Entity가

cascade = [CascadeType.ALL] 옵션이 지정되어있어

BusinessCard 가 insert 될때 BusinessCardDetail 도 같이 insert 되는구조라서

기존의 card 인터페이스를 써서 save 함수를 써야되는지 궁금합니다.

그리고 혹시 추가한 querydsl 에서 insert 구문을 써야된다면

혹시 querydsql 에서 insert 구문은 어떻게 쓰는것인지 여쭈어봐도될까요?

검색해봤는데 querysql 에서의 insert 구문은 제대로 나와있는게 없더라구요

 

답변 1

0

최태현님의 프로필 이미지
최태현
지식공유자

2024. 06. 20. 17:27

안녕하세요! huk님! 🙂 좋은 질문 감사드립니다.

하나씩 답변드려볼게요!

 

[그래서 저도 별도로 두개를 사용하려다가 두개로 사용하는게 맞는지 여쭈어봅니다.]

네네 맞습니다!

Querydsl 자체가 등장한 이유는 복잡한 쿼리를 문자열 대신 '코드로써' 작성하여 컴파일 오류로 오타 등을 찾기 위함인데요!

생각해보면 insert 같은 경우는 다른 유형의 쿼리 (특히 조회) 보다 비교적 획일화 되어 있습니다.

 

또한, Spring Data JPA가 제공하는 Entity에 대한 Repository의 insert 기능이 워낙 잘 되어 있어서 저는 항상

  • 조회를 할 때에는 Querydsl

    • 아주 가끔 복잡한 삭제, 업데이트를 SQL로 바로 하고 싶을 때도 Querydsl을 쓴 적은 있습니다.

  • 그 외 작업을 할 때에는 Spring Data JPA의 Repository

를 사용해 왔습니다! 🙂

 

 

[Querydsl로 insert를 하는 방법]

물론 Querydsl 로도 insert 쿼리를 발생시킬 수 있습니다.

http://querydsl.com/static/querydsl/5.0.0/reference/html/ch02s03.html#d0e1351

다만, 위에서 말씀드린 이유로 추천드리지는 않고, 적재적소에 맞는 기술 사용을 권장드립니다.

 

답변이 도움이 되었으면 좋겠습니다.

또 궁금한 점 있으시면 편하게 질문 남겨주세요! 감사합니다! 🙏

huk님의 프로필 이미지
huk
질문자

2024. 06. 21. 15:11

감사합니다.

궁금했던 가슴이뻥뚫리는기분입니다.

huk님의 프로필 이미지

작성한 질문수

질문하기