Spring Boot, Doma2, Gradle의 초기 설정 요약

처음에



Eclipse로 개발할 때 Spring Boot + Doma2 + Gradle의 초기 설정으로 항상 빠져 있으므로 자신을 위해 정리한다.

환경


  • IDE: Eclipse pleiades-2020-03
  • Spring Boot: 2.3.1 RELEASE
  • Doma: 2.35.0

  • 설정 절차



    (선택 사항) Spring Initializer로 응용 프로그램의 편지지 만들기



    Eclipse 플러그인을 통해 만들고 있지만 브라우저 또는 curl이든 괜찮습니다.





    Doma2에 종속성 추가



    build.gradle
    dependencies {
      // ... 省略
      implementation 'org.seasar.doma.boot:doma-spring-boot-starter:1.4.0'
      annotationProcessor 'org.seasar.doma:doma-processor:2.35.0'
    }
    

    Eclipse 설정하기


    build.gradle 의 plugins 에 Eclipse 설정용의 플러그 인을 추가한다.

    build.gradle
    plugins {
      // ...
      id 'com.diffplug.eclipse.apt' version '3.23.0'
    }
    
    gradle eclipse 를 실행하고 설정을 반영합니다.
    $ ./gradlew eclipse
    Starting a Gradle Daemon (subsequent builds will be faster)
    
    BUILD SUCCESSFUL in 16s
    5 actionable tasks: 5 executed
    

    Eclipse 설정 (주석 처리)이 완료되었는지 확인할 수 있습니다.





    간단한 API 만들기



    htps : // 기주 b. 이 m / 도마 f 라메를 rk / 도마 - sp 링 g - 보오 t / t 레에 / 1.4.0 의 README 에 따라, 기본적으로 작성합니다.

    엔티티 정의



    Reservation.java
    package com.example.demo;
    
    import org.seasar.doma.Entity;
    
    import lombok.Data;
    
    @Data
    @Entity
    public class Reservation {
    
        private Integer id;
    
        private String name;
    }
    

    Dao Interface 정의



    ReservationDao.java
    package com.example.demo;
    
    import java.util.List;
    
    import org.seasar.doma.Dao;
    import org.seasar.doma.Insert;
    import org.seasar.doma.Select;
    import org.seasar.doma.boot.ConfigAutowireable;
    import org.springframework.transaction.annotation.Transactional;
    
    @ConfigAutowireable
    @Dao
    public interface ReservationDao {
    
        @Select
        public List<Reservation> selectAll();
    
        @Insert
        @Transactional
        public int insert(Reservation reservation);
    }
    
    ReservationDao#selectAll 에 커서를 놓고 마우스 오른쪽 버튼으로 클릭 > Doma > Jump to Sql File을 누르면 빈 SQL 파일이 생성됩니다. (Eclipse에 Doma Tools 플러그인을 추가하는 경우)

    ※ DOMA4019가 발생한 경우는 (보충) DOMA4019 에러가 발생한 경우을 참조하십시오.

    SQL 파일에 쿼리 작성



    selectAll.sql
    SELECT
      id,
      name
    FROM reservation
    ORDER BY name ASC
    

    Service, Controller 클래스 정의



    ReservationService.java
    package com.example.demo;
    
    import java.util.List;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    @Service
    public class ReservationService {
    
        @Autowired
        private ReservationDao reservationDao;
    
        public List<Reservation> selectAll() {
            return reservationDao.selectAll();
        }
    
        public int insert(Reservation reservation) {
            return reservationDao.insert(reservation);
        }
    }
    
    

    ReservationController.java
    package com.example.demo;
    
    import java.util.List;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RequestBody;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class ReservationController {
    
        @Autowired
        private ReservationService reservationService;
    
        @GetMapping(path = "/")
        public List<Reservation> selectAll() {
            return reservationService.selectAll();
        }
    
        @PostMapping(path = "/")
        public int insert(@RequestBody Reservation reservation) {
            return reservationService.insert(reservation);
        }
    
    }
    

    시작 시 Reservation 테이블 만들기



    HSQLDB 이라는 Java 의 인메모리 DB 를 사용합니다. src/main/resources 바로 아래에 schema.sql를 배치하면 시작시 테이블 작성 스크립트를 흘릴 수 있습니다.

    schema.sql
    CREATE TABLE reservation (
      id   IDENTITY,
      NAME VARCHAR(50)
    );
    

    API 동작 확인



    POST(등록)
    POST http://localhost:8080 HTTP/1.1
    Content-Type: application/json
    
    {
      "id": 1,
      "name": "サンプルA"
    }
    

    응답;
    HTTP/1.1 200 
    Content-Type: application/json
    Transfer-Encoding: chunked
    Date: Sun, 12 Jul 2020 15:09:30 GMT
    Connection: close
    
    1
    

    GET(전건 취득)
    GET http://localhost:8080 HTTP/1.1
    

    응답;
    HTTP/1.1 200 
    Content-Type: application/json
    Transfer-Encoding: chunked
    Date: Sun, 12 Jul 2020 15:10:20 GMT
    Connection: close
    
    [
      {
        "id": 1,
        "name": "サンプルA"
      }
    ]
    

    (보충) DOMA4019 오류가 발생한 경우



    다음과 같이 SQL 파일의 절대 경로가 예상대로는 아니며 DOMA4019 오류가 발생하는 경우에 대해.
    [DOMA4019] The file "META-INF/com/example/demo/ReservationDao/selectAll.sql" is not found in the classpath. The absolute path is "C:\Git\springboot-doma2-sample\bin\main\META-INF\com\example\demo\ReservationDao\selectAll.sql".
    

    대상 프로젝트에서 오른쪽 클릭 > 속성 > Java 빌드 경로를 수정합니다.



    프로젝트의 기본 출력 폴더 ⇒ 특정 출력 폴더 ( bin/main )로 수정.



    끝에



    작성한 애플리케이션은 리포지토리에 저장되었습니다. build.gradle 의 전량을 참조하고 싶은 경우 등에 봐 주세요.

    참고


  • htps : // 도마. Red d. cs. 이오 / 엔 / 2.
  • htps : // 도마. Red d. cs. 이오 / 엔 / 2.
  • htps : // 기주 b. 이 m / 도마 f 라메를 rk / 도마 - sp 링 g - 보오 t / t 레에 / 1.4.0
  • 좋은 웹페이지 즐겨찾기