티스토리 뷰

1단계 gradle 설정  *****************************

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
plugins {
    id 'org.springframework.boot' version '2.2.5.RELEASE'
    id 'io.spring.dependency-management' version '1.0.9.RELEASE'
    id 'java'
    id 'war'
    id 'com.ewerk.gradle.plugins.querydsl' version '1.0.10'
}
 
group = 'com.chatbot'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
 
repositories {
    mavenCentral()
}
 
dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    compile group: 'org.springframework.boot', name: 'spring-boot-starter', version: '2.2.5.RELEASE'
    compile group: 'org.springframework.boot', name: 'spring-boot-devtools', version: '2.2.5.RELEASE'
    compile group: 'org.springframework.boot', name: 'spring-boot-starter-web-services', version: '2.2.5.RELEASE'
    providedCompile group: 'org.projectlombok', name: 'lombok', version: '1.18.12'
    compile group: 'org.mariadb.jdbc', name: 'mariadb-java-client', version: '2.5.4'
    compile group: 'org.springframework.boot', name: 'spring-boot-starter-data-jpa', version: '2.2.5.RELEASE'
    compile group: 'io.springfox', name: 'springfox-swagger2', version: '2.9.2'
    compile group: 'io.springfox', name: 'springfox-swagger-ui', version: '2.9.2'
    compile group: 'com.querydsl', name: 'querydsl-jpa', version: '4.3.0'
    compile group: 'com.querydsl', name: 'querydsl-apt', version: '4.3.0'
    compile group: 'com.amazonaws', name: 'aws-java-sdk', version: '1.11.744'
    providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
    testImplementation('org.springframework.boot:spring-boot-starter-test') {
        exclude group: 'org.junit.vintage'module'junit-vintage-engine'
    }
}
 
test {
    useJUnitPlatform()
}
def querydslSrcDir = 'src/main/generated'
 
querydsl{
    library = 'com.querydsl:querydsl-apt'
    jpa = true
    querydslSourcesDir = querydslSrcDir
}
 
compileQuerydsl{
    options.annotationProcessorPath = configurations.querydsl
}
configurations {
    querydsl.extendsFrom compileClasspath
}
sourceSets{
    main{
        java{
            srcDirs = ['src/main/java', querydslSrcDir]
        }
    }
}
 
cs

수정하고 우측 그래들 리셋 클릭 !!

 

 

인텔리제이 우측 Gradle 클릭

other > compileQuerydsl 클릭

 

콘솔에 반응 발생합니다.

 

 

잠시후 아래와 같은 화면을 출력하며 멈춥니다.

 

 

좌측을 보면 아래와 같은 패키지와 파일이 생성됩니다.

 

QMember.java 코드는 다음과 같습니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package com.chatbot.web.member;
 
import static com.querydsl.core.types.PathMetadataFactory.*;
import com.querydsl.core.types.dsl.*;
import com.querydsl.core.types.PathMetadata;
import javax.annotation.Generated;
import com.querydsl.core.types.Path;
 
 
/**
 * QMember is a Querydsl query type for Member
 */
@Generated("com.querydsl.codegen.EntitySerializer")
public class QMember extends EntityPathBase<Member> {
 
    private static final long serialVersionUID = 1014359176L;
 
    public static final QMember member = new QMember("member1");
 
    public final StringPath addr = createString("addr");
 
    public final StringPath email = createString("email");
 
    public final NumberPath<Long> id = createNumber("id", Long.class);
 
    public final StringPath passwd = createString("passwd");
 
    public final StringPath userid = createString("userid");
 
    public QMember(String variable) {
        super(Member.class, forVariable(variable));
    }
 
    public QMember(Path<extends Member> path) {
        super(path.getType(), path.getMetadata());
    }
 
    public QMember(PathMetadata metadata) {
        super(Member.class, metadata);
    }
 
}
 
 
cs

프로젝트 구성은 [덕 - 타이핑] 구조로 하겠습니다.

 

구성의 근거는 다음과 같습니다.

 

https://docs.spring.io/spring-data/jpa/docs/2.3.1.RELEASE/reference/html/#repositories.custom-implementations

 

Spring Data JPA - Reference Documentation

Example 108. Using @Transactional at query methods @Transactional(readOnly = true) public interface UserRepository extends JpaRepository { List findByLastname(String lastname); @Modifying @Transactional @Query("delete from User u where u.active = false") v

docs.spring.io

이 페이지에서 해당 사항은 아래에 별도로 캡쳐했습니다.

가장 중요한 점은 클래스이름을 인터페이스 이름 + Impl 로 작성하라는 정보입니다. Syntax 로 인지하셔야 합니다.

다만 CustomizedUserRepository 부분은 사용자 정의가 가능하므로 해당 인터페이스는 기존에 익숙한 이름인 service 로 정의합니다.

 

class Member
class MemberRepositoryImpl (interface MemberService , MemberRepository , QuerydslRepositorySupport)
class MemberController

 

이런 형태로 구성이 되겠습니다.

2 단계 *************************************

Database 연결하기

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
spring:
  mvc:
    view:
      suffix: .html
  jpa:
    show-sql: true
    database: mysql
    hibernate:
      ddl-auto: create
  datasource:
    driver-class-name: org.mariadb.jdbc.Driver
    url: jdbc:mariadb://127.0.0.1:3306/mariadb
    username: mariadb
    password: mariadb
 
cs

 

 

 

 

 

 

 

'9. 데브옵스' 카테고리의 다른 글

[인텔리제이] 익스프레스JS Project 생성  (0) 2020.05.08
Setup VScode for Node.js  (0) 2020.05.07
React-Native VSCode Setup  (0) 2020.05.04
Pycharm 개발환경 설정하기  (0) 2020.05.04
Eclipse Debugging on Other Blog  (0) 2020.05.03
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함