-
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를 종료 후 다시 빌드 해보세요