CRUD

ChoRong0824·2024년 1월 19일
2

Web

목록 보기
25/25
post-custom-banner

많은 사람들이 인프런의 (갓)김영한님의 강의를 수강 후, 첫 프로젝트로 CRUD게시판을 구현할 것이라고 생각한다.
이에 게시판 및 다양한 프로젝트 구현 전, CRUD를 확실하게 하고 가는 것이 좋다고 생각하여 이렇게 포스팅하게 되었다.
많은 분들에게 도움이 되면 좋겠다.


세팅

  1. https://start.spring.io/
  • 자바17, jpa, gradle springboot 3.2.1
  • 의존성 주입 : Spring Web, Spring Data JPA, MySQL Driver, lombok
  1. GradlePJ 설정 (PJ는 내가 자주 쓰는 프로젝트 줄임말이다)
    build.gradle 파일에 필요한 의존성을 추가해준다

  2. db 설정


User에는 내가 쓸 db의 이름설정 말고 당연하게, 이전에 mysql에서 생성할 때 쓰던 그 아이디로 User 및 PW를 입력해주면 된다.
그후, mysql 콘솔창에 위와같이 입력해주면 되는 것이다.

이렇게 한다면 에러가 뜰 것이다. 왜냐면, 설정을 제대로 하지 않았기 떄문이다.
url 경로를 한 번 확인해보면 정답을 알 수 있게된다.

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/simpleboard?useSSL=false&serverTimezone=UTC
    username: simplecrud
    password: 1234
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true

이렇게 설정되어야 정상 작동하게 될 것이다.
왜냐하면 나는 mysql 콘솔에서 생성한 db의 이름이 simplecrud가 아니라 board였기 때문이다.
이렇게 되면 콘솔창에 있는 create문도 바꿔줘야한다. simpleboard로 수정해주면 된다.

그러면 이와 같이 문제없이 정상 작동하는 것을 볼 수 있게 될 것이다.


초보자라면 일단 코드를 보고 따라 타이핑하고 이게 왜 이렇게 짠 코드인지 확인해보면서 학습하는 것을 권장드립니다. (필자도 핵 초보입니다)

자세한 코드는 https://github.com/sjMun09/simpleCrud 참고 바랍니다.

MVC패턴?

큰 로직을 model, view, controller로 나누는 것이다.
view는 클라이언트가 보는 ui, model은 app,data,data DB, 컨트롤러는 모델과 뷰를 컨트롤 하는 것입니다.
쉽게 말해서 좌측에 뷰, 우측에 모델이 싸우고 있는데 중간에 반장인 컨트롤러가 중재 및 협상을 한다고 이해하시면 됩니다. (이해를 돕기 위한 것임. 실제 이런 기능은 아님)

View?

client가 보는 UI

Service?

비즈니스 로직을 수행(서비스가 알맞은 정보를 가공하는 과정)하고 db에 접근하는 DAO를 활용해서 결과 값을 받아옵니다.

Controller ?

사용자의 request을 처리한 후 지정된 view에 모델 객체를 넘겨주는 역할을 한다.
사용자의 요청이 진입하는 지점으로 reqeust에 따라 어떤 response를 결정을 Service에 넘겨주는 역할을 한다.
그 후 Service에서 실질적으로 처리한 내용을 View로 넘겨주는 것이다.


코드 작성 순서

  1. 플젝 설정
  2. db 연동
  3. 엔티티 클래스 생성
    엔티티를 만들고, Lombok을 사용해 간단하게 게더, 세터, 생성자를 간소화 가능.
  4. Jpa 리포지토리 생성
    엔티티를 위한 Jpa 리포지토리 인터페이스 생성
  5. 서비스 계층 구현
    crud 작업을 수행하는 서비스 클래스 구현
  6. 컨트롤러 구현
    http 요청을 처리할 컨트롤러 클래스
  7. app 실행 및 테스트
    -> 포스트맨 또는 api테스팅 툴을 사용해 생성된 api 엔드포인트를 테스트.
  8. 예외처리
    작성하면서 동시에 예외처리 가능하나, 필자는 위 순서를 작성한 후 필요한 부분엔 TODO:를 달아두고 다 작성한 후 필요한 부분을 예외처리 해줬음.

CRUD를 간단하게 알아봤습니다.
여기에 더 나아가 요구사항에 따라 기능이 더 복잡한 로직을 추가하거나 대표적인 서브 플젝인 게시판 등 다양한 프로젝트를 구현할 수 있을 것입니다.


profile
컴퓨터공학과에 재학중이며, 백엔드를 지향하고 있습니다. 많이 부족하지만 열심히 노력해서 실력을 갈고 닦겠습니다. 부족하고 틀린 부분이 있을 수도 있지만 이쁘게 봐주시면 감사하겠습니다. 틀린 부분은 댓글 남겨주시면 제가 따로 학습 및 자료를 찾아봐서 제 것으로 만들도록 하겠습니다. 귀중한 시간 방문해주셔서 감사합니다.
post-custom-banner

0개의 댓글