Life style/TIL

[TIL] 프로젝트 개발환경 세팅 및 Todo 백엔드 생성

jaewpark 2022. 2. 21. 15:37

이틀동안 노트북에 가상화 세팅을 하기 위해 여러 방법을 동원했지만, 아마도 가상화 환경이 충돌이 일어나서 발생하지 않을까? 하는 게 추론이고 포맷을 하고 다 해봐도 결국 무한 부팅으로 다시 포맷을 하게 되었다.

 

그렇게 시작된 프로젝트 세팅은 데스크탑에서 따로 진행을 하게 되었고, Docker를 사용하기 위한 삽질이었다.

결국 데스크탑에서 설치는 완료를 하였고, 

 

Docker

: 애플리케이션을 환경에 구애 받지 않고 실행하는 기술

 

windows powershell에서 

 

을 입력하였으나 

 

Unable to find image 'images:latest' locally docker: Error response from daemon: pull access denied for images, repository does not exist or may require 'docker login': denied: requested access to the resource is denied. See 'docker run --help'.

 

Error 창이 떴고 해결을 위해서 docker login 입력하니 해결하였다.

 

mysql 데이터베이스를 생성 

-d : 컨테이너를 백그라운드에서 실행
-p : 포트포워딩을 지정하는 옵션, (외부포트):(내부포트) 로 지정

DBeaver

: 두 개 이상의 데이터베이스를 사용할 때 관리하기 편한 툴

 

위에서 데이터베이스를 연결을 위해 mysql 을 선택하고, database, username, password 3가지를 다 입력하여 연결하면 되지만, 제대로 실행이 되지 않는다면

allowPublicKeyRetrieval의 Value 값을 true로 바꿔주면 된다.


IntelliJ IDEA

: yml 직관력이 좋은 코드로 주석을 쓸 수도 있는 ㄴ기존에 주로 사용되던 포맷인 JSON의 불편함을 해소하기 위해 만들어진 상위호환 환경이다.

사용에 대한 자세한 것은 이후 공부를 해야될 거 같다

테이블 생성

repository 폴더 내, Todo (Kotlin Class) 아래와 같이 작성

@Entity : 데이터베이스에 Table과 Mapping하는 Kotlin Class 만드는 allocation
GenerationType.IDENTITY : 기본 키 생성을 데이터베이스에 위임, Spring Data JPA에서 자동생성 하는 방법
@Column(nullable = false) : null이 들어갈 수 없도록 설정
@ColumnDefault( "false" ) : 기본값으로 false 설정

Shift + F10 누르면 테이블을 생성을 한다

DBeaver 에서 아래와 같이 확인할 수 있다. F3 혹은 todolost 에서 우클릭을 통해 SQL 편집기를 열 수 있다.

 

TodoRepository.kt

Todo를 조작할 수 있게 하는 Interface, springframework 통해서 CrudRepository를 상속 

 

TodoService.kt

위에서 Interface가 CrudRepository를 상속받으면서 쓸 수 있는 메소드들이 있고, @Service를 꼭 적어야 한다.

여기서 사용된 메소드는 findAll(), save(), deleteById()로 필요한 클래스를 생성

...findByIdOrNull(todoId) ?: throw Exception() : 기존값을 찾아서 확인 없으면 Exception을 반환

 

TodoController.kt

Service에서 만든 메소드를 사용

RestController의 allocation 입력, RequestMapping 호출할 서버 url 입력 

private val todoService : todoService를 연결
http Request에 대한 메소드를 정의 : Get, Post, Put, Delete
@RequestBody todoRequest : DTO(데이터 전송 객체)

 

TodoRequest.kt

data 타입을 이용해서 data class TodoRequest을 생성 


Postman

Create new collection을 통해 생성 후, Add reques로 GET, POST, PUT, DEL 생성

테이블 내부에 있는 데이터를 확인
Body, JSON으로 변경 후, 입력하면 아래와 같이 id와 completed 자동생성
고유 id를 입력 받으면 해당 데이터 삭제


DBeaver

Postman을 통해서 자료를 입력받으면, DBeaver을 통해서 데이터를 확인할 수 있다

SELECT * FROM todo