동석쿠
프로그래밍 공부
동석쿠
전체 방문자
오늘
어제
  • 공부 (80)
    • 공부기록 (64)
      • 웹개발 (6)
      • Java (7)
      • cs 공부 (3)
      • http 웹 기본 지식 (8)
      • 자바 스프링 (20)
      • 개인 미니프로젝트 (3)
      • 알고리즘 공부 (6)
      • 면접준비 (2)
      • 프론트공부 (8)
      • 파이썬 플라스크 (1)
    • 항해99 기록 (14)
      • 회고록 (10)
      • 팀프로젝트 (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • lombok
  • API
  • 알고리즘
  • 상속
  • 문법
  • Get
  • 프로그래머스
  • 리프레쉬토큰
  • JPA
  • 파이썬
  • 항해99
  • 리프레시토큰
  • 자바
  • Java
  • 리액트
  • Post
  • 리스트
  • 스프링부트
  • 스프링
  • 자바스크립트

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
동석쿠

프로그래밍 공부

Querydsl 공부 <환경 설정 및 기본 엔티티 설정>
공부기록/자바 스프링

Querydsl 공부 <환경 설정 및 기본 엔티티 설정>

2022. 5. 26. 00:40

Querydsl공부를 하며 잊지않게 기록하는 게시글 입니다.

 

프로젝트 생성 후 

 

Gradle 전체 설정

buildscript {
    ext {
        queryDslVersion = "5.0.0"
    }
}

plugins {
    id 'org.springframework.boot' version '2.6.0'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    //querydsl 추가
    id "com.ewerk.gradle.plugins.querydsl" version "1.0.10"
    id 'java'
}

group = 'study'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    compileOnly 'org.projectlombok:lombok'
    runtimeOnly 'com.h2database:h2'
    //querydsl 추가
    implementation "com.querydsl:querydsl-jpa:${queryDslVersion}"
    implementation "com.querydsl:querydsl-apt:${queryDslVersion}"

    implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.8'

    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

test {
    useJUnitPlatform()
}

//querydsl 추가 시작
def querydslDir = "$buildDir/generated/querydsl"

querydsl {
    jpa = true
    querydslSourcesDir = querydslDir
}
sourceSets {
    main.java.srcDir querydslDir
}
compileQuerydsl{
    options.annotationProcessorPath = configurations.querydsl
}
configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
    querydsl.extendsFrom compileClasspath
}
//querydsl 추가 끝

동작 확인을 위한 테스트 컨트롤러

@RestController
public class HelloController {

    @GetMapping("/hello")
    public String hello() {
        return "hello";
    }
}

 

동작 확인을 위한 테스트 엔티티

@Entity
@Getter
@Setter
public class Hello {

    @Id
    @GeneratedValue
    private Long id;
}

검증용 Q 타입 생성

compileQuerydsl 더블 클릭

build -> generated -> 같은 패키지항목에 Q타입 생성 확인

 

엔티티 생성

멤버와 팀사이의 ManyToOne 관계

@Entity
@Getter
@Setter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@ToString(of = {"id", "username", "age"})
public class Member {

    @Id @GeneratedValue
    @Column(name = "member_id")
    private Long id;
    private String username;
    private int age;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "team_id")
    private Team team;

    public Member(String username) {
        this(username, 0);
    }

    public Member(String username, int age) {
        this(username, age, null);
    }

    public Member(String username, int age, Team team) {
        this.username = username;
        this.age = age;
        if (team != null) {
            changeTeam(team);
        }
    }

    private void changeTeam(Team team) {
        this.team = team;
        team.getMembers().add(this);
    }
}
@Entity
@Getter
@Setter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@ToString(of = {"id", "name"})
public class Team {

    @Id
    @GeneratedValue
    private Long id;
    private String name;

    @OneToMany(mappedBy = "team")
    private List<Member> members = new ArrayList<>();

    public Team(String name) {
        this.name = name;
    }


}

'공부기록 > 자바 스프링' 카테고리의 다른 글

Querydsl 공부 <기본 문법>  (0) 2022.06.07
JPA 연관관계  (0) 2022.04.17
스프링 아이템기능 리팩터링  (0) 2022.03.19
스프링 아이템기능 구현, 단어 뒤집기, 파파고 API  (0) 2022.03.12
스프링 룰렛기능 만들기 (가챠시스템), 자바 난수 설정, 확률설정  (0) 2022.03.09
    '공부기록/자바 스프링' 카테고리의 다른 글
    • Querydsl 공부 <기본 문법>
    • JPA 연관관계
    • 스프링 아이템기능 리팩터링
    • 스프링 아이템기능 구현, 단어 뒤집기, 파파고 API
    동석쿠
    동석쿠

    티스토리툴바