전반적

https://minkukjo.github.io/study/docs/spring/jpa/kotlin-jpa-guide/

 

Kotlin JPA 개발 가이드 | 도전하는 개발자

JPA With Kotlin

minkukjo.github.io

 

 

코틀린 스프링 부트에 QueryDsl 적용

https://dev-gorany.tistory.com/362

 

[Spring Boot] Kotlin Querydsl 적용 (with. Mono repo, Multi module)

[Spring Boot] Mono Repo, Multi Module (with. Gradle Kotlin DSL) Intro 개인 프로젝트 정도의 규모라면 하나의 프로젝트 안에 api, web, admin 등이 모두 들어가있어도 커버가 되지만, 규모가 커지면 각각 개별..

dev-gorany.tistory.com

 

https://velog.io/@gosgjung/kotlin-DSL-gradle-QueryDSL-%EC%84%A4%EC%A0%95

 

(chartnomy) kotlin DSL gradle - QueryDSL 설정

아직 QueryDsl을 사용하는 코틀린 DSL 기반 Gradle 을 사용하는 Spring Boot 서적들이 없는 것 같았다. (물론 내가 못 찾는 거일수도 있다는거). 인터넷을 찾아가면서 kotlin 기반 gradle 파일에서 querydsl 을

velog.io

 

withConvention deprecated 처리

https://pasudo123.tistory.com/472

 

20210828 [gradle] The concept of conventions is deprecated. Use extensions instead

개요 querydsl 설정하던도중 Qclass 경로 설정에 대한 deprecated 뭐 만나서 그냥 잠깐 삽질한 경험 공유. gradle version 7.x 이상부터 확인된다. 문제코드 withConvention 을 상세 클릭하면 아래와 같은 내용이..

pasudo123.tistory.com

 

spiring boot jpa entity 작성하기

https://chana.tistory.com/entry/spring-boot-kotlin-kotlin%EC%9C%BC%EB%A1%9C-JPA-entity-%EC%9E%91%EC%84%B1%ED%95%98%EA%B8%B0

 

[spring boot / kotlin] kotlin으로 JPA entity 작성하기

Spring boot 프레임워크에서는 @Entiy 어노테이션을 사용해서 어플리케이션의 엔티티 객체와 데이터베이스 테이블을 매핑해 객체지향적으로 데이터베이스의 데이터를 관리할 수 있다. JPA 엔티티를

chana.tistory.com

 

https://effectivesquid.tistory.com/entry/Kotlin-JPA-%EC%82%AC%EC%9A%A9%EC%8B%9C-Entity-%EC%A0%95%EC%9D%98

 

Kotlin + JPA 사용시 Entity 정의

클래스 정의 제약 사항 JPA를 사용하게 되면 대부분 Hibernate를 구현체로 사용하게 된다. Hibernate를 구현체로 사용하게 되면 Entity로 사용할 클래스에 몇 가지 제약사항이 존재한다. https://docs.oracle.c

effectivesquid.tistory.com

 

querydsl 커스텀

https://gksdudrb922.tistory.com/125

 

[Querydsl] 스프링 데이터 JPA가 제공하는 Querydsl 기능

https://www.inflearn.com/course/Querydsl-%EC%8B%A4%EC%A0%84/ 실전! Querydsl - 인프런 | 강의 Querydsl의 기초부터 실무 활용까지 한번에 해결, 본 강의는 자바 백엔드 개발의 실전 코스를 완성하는 마지막 강..

gksdudrb922.tistory.com

 

https://blog.sapzil.org/2018/08/26/kotlin-jpa-pitfalls-embeddable/

 

Kotlin에서 JPA 사용할 때 주의할 점 (2) - Embeddable, IdClass | The Sapzil

Kotlin에서 JPA 사용할 때 주의할 점을 쓴 이후로 직장에서 하는 프로젝트에도 Kotlin + JPA를 사용하게 되었습니다. 그러다보니 좀 더 고급 기능을 사용하게 되고 또 여러가지 새로운 어려움에 부딪

blog.sapzil.org

 

 

시간이 없으신 분들을 위한 선 요약 세팅

(Use this setting)

plugins {
    id 'org.springframework.boot' version '2.6.2'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}

repositories {
    mavenCentral()
    maven { url "https://plugins.gradle.org/m2/" } // 플러그인 저장소
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    compileOnly 'org.projectlombok:lombok'
    developmentOnly 'org.springframework.boot:spring-boot-devtools'
    runtimeOnly 'com.h2database:h2'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'

    // QueryDSL
    implementation "com.querydsl:querydsl-jpa:5.0.0"
    implementation "com.querydsl:querydsl-core:5.0.0"
    annotationProcessor "com.querydsl:querydsl-apt:5.0.0:jpa"
    annotationProcessor 'org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.2.Final'
    annotationProcessor 'javax.annotation:javax.annotation-api:1.3.2'
}

test {
    useJUnitPlatform()
}

 

 

---------------------------------------------------

(Don't use this setting )

QueryDsl 세팅에 애를 먹는 경우가 많다 4 버전 대에는 특히 심했는데, 아래와 같은 코드를 추가해줬었다

 

여러 페이지들을 검색하며 세팅하였으나 공유하여 다른 사람이 쓰면 안되는 등 골치가 아팠다.

하지만 5버전을 세팅하면서 부터인지 위와 같은 복잡한 세팅이 필요 없어진 듯하다.

맨 위에 보이는 세팅처럼 //QueryDsl 부분만 추가해주면 따로 설정이 필요없이 잘 작동 될 것이다.

메서드를 선택하고

ctrl shift T 를 누르면 테스트 패키지에 자동으로 생성됨.

 

 

 

자바 리스트 필터

    public List<AdRequestVO> listAll() {
        return adRequestMapper.findByStatusOrStatus("P1", "P2")
                .stream()
                .filter(i -> (i.getLawMemberAdRequest() != null))
                .collect(Collectors.toList());
    }

 

없는데이터 처리

jpa 테이블 컬럼에 추가(익셉션을 null로 변경)

@NotFound(action = NotFoundAction.IGNORE)
private VO vo;

 

Q가 붙은 DTO나 VO등이 컴파일 에러가 날 경우

RebuildProject를 한번 해준뒤

인텔리제이 오른쪽의 Maven에서 프로젝트를 오른쪽 클릭하여 Download Sources

한뒤 Lifecycle에서 compile

 

 

아래와 같이 모델의 getter에 이름을 붙여주자

class Test{
	private String TE;
    
    @JsonProperty("TE")
    public String getTE(){
        return TE;
    }
}

 

sql set 값 뒤에

 

리절트맵

 

+ Recent posts