ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • springboot JPA
    개발/spring 2022. 3. 26. 19:35

    안녕하세요

    오늘은 springboot 내 JPA 연동후 정상 조회 확인까지 확인하는 시간을 가져볼까 합니다. 

     

    https://start.spring.io/ 를 통해 아무이름을 가진 프로젝트를 하나 생성해줍니다. 

    mysql을 설치가 되신분들은 

    1.프로젝트 내 application.yml 파일 내 아래와 같이 기입합니다. 

    cf) 저는 보기 편함을 위해 properties파일을 yml 파일로 변환하였습니다. 

    spring:
      datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://localhost:3306/데이터베이스명?serverTimezone=UTC&characterEncoding=UTF-8
        username: 유저아이디
        password: 유저비밀번호
    
      jpa:
        database: mysql
        database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
        properties:
          hibernate:
            show_sql: true
            format_sql: true
            use_sql_comments: true

     

    2.pom.xml 내 mysql connector 를 추가하고 메이븐 빌드를 해줍니다. 

    <dependency>
       <groupId>mysql</groupId>
       <artifactId>mysql-connector-java</artifactId>
       <version>8.0.21</version>
    </dependency>

    3.Repository를 추가합니다. 

    DAO가 JPA에서는 Repository로 칭합니다. 

    저는 프로젝트 내 패키지를 별개로 두어 Interface를 생성하였습니다. 

    package com.bestFoodBack.bestBoodBack.Category.Repository;
    
    import com.bestFoodBack.bestBoodBack.Category.Model.Category;
    import org.springframework.data.jpa.repository.JpaRepository;
    import org.springframework.stereotype.Repository;
    
    @Repository
    public interface CategoryRepository extends JpaRepository<Category,Long> {
    }
    

    4.사용할 테이블을 Entity 모델로 설정해줍니다. 

    package com.bestFoodBack.bestBoodBack.Category.Model;
    
    import lombok.AllArgsConstructor;
    import lombok.Builder;
    import lombok.Getter;
    import lombok.NoArgsConstructor;
    
    import javax.persistence.*;
    import java.time.LocalDateTime;
    
    
    @Getter
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    @Entity(name = "category")
    public class Category {
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Column(name = "cate_seq")
        private long cateSeq;
        @Column(name = "cate_depth")
        private long cateDepth;
        @Column(name = "cate_nm")
        private String cateNm;
        @Column(name = "ins_id")
        private String indId;
        @Column(name = "ins_dttm")
        private LocalDateTime insDttm;
        @Column(name = "mod_id")
        private String modId;
        @Column(name = "mod_dttm")
        private LocalDateTime modDttm;
    
    }
    

    5.Controller 내 해당 Repository를 의존성 주입 후 호출 하는 메소드를 만들어줍니다. 

    package com.bestFoodBack.bestBoodBack.Category.Controller;
    
    import com.bestFoodBack.bestBoodBack.Category.Model.Category;
    import com.bestFoodBack.bestBoodBack.Category.Repository.CategoryRepository;
    import lombok.RequiredArgsConstructor;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import java.util.List;
    
    @RequiredArgsConstructor
    @RestController
    @RequestMapping("/v1")
    public class CategoryController {
    
        private final CategoryRepository categoryRepository;
    
        @GetMapping("/category")
        public List<Category> getCategory() {
    
            return categoryRepository.findAll();
        }
    
    }
    

     

    6. 정상 확인을 위해 빌드를 해봅니다. 

    cf) sql. SQLexception: Access denied for user 'root' @ 'localhost' (using password: YES

    혹시 이런 오류가 발견됐으면 mysql 정상 로그인 여부를 확인하시는데 

    yml 파일 내 오류가 발생해서 일수도 있습니다. 예를 들면 yml이 숫자 인식에 있어 문제가 발생할 수 있으니 

    "12345678" 이런식으로 콤마를 추가하여 줍니다. 

    password: "12345678"

     

    7.정상 접속 확인을 위해 리눅스 내 curl 명령으로 해당 경로를 확인해줍니다. 

    cf) 포스트맨이든 다른 좋은 툴들이 많습니다. 굳이 터미널로 확인 안하셔도 됩니다. 

     curl -X GET http://localhost:8080/v1/category

    application.yml 파일 내 쿼리를 볼수 있게 설정하여 터미널로 로그를 확인할 수 있을 겁니다. 

     

    cf) 포트 사용 중이라 빌드가 안될 경우 

    lsof -i 8080 으로 사용 PID를 확인 후 kill -9 2929 을 통해 PID를 종료 후 다시 빌드 해보세요 

     

     

    '개발 > spring' 카테고리의 다른 글

    예외처리  (0) 2021.12.19

    댓글

Designed by Tistory.