사랑하애오
article thumbnail
[VSCODE] SpringBoot CRUD게시판 만들기 - 도메인 별로 분류하기
JAVA/SpringBoot CRUD Board 2022. 7. 1. 11:02

이제 본격적으로 SBB를 만들어 보자. 다음으로 만들 기능은 질문 목록이다. 하지만 그에 앞서 패키지 정리가 필요해 보인다. 지금까지 우리가 작성한 파일은 다음처럼 com.mysite.sbb 패키지 안에 모두 모여 있다. 이렇게 하나의 패키지 안에 모든 자바파일을 넣고 관리하는 것은 바람직하지 않다. SBB는 도메인별로 패키지를 나누어 자바파일을 관리해 보자. 도메인은 "질문", "답변" "사용자" 처럼 굵직한 요구사항 또는 문제 영역을 대표하는 말이다. 따라서 SBB 프로젝트의 도메인은 다음과 같이 구성할수 있다. question - 질문 (com.mysite.sbb.question) answer - 답변 (com.mysite.sbb.answer) user - 사용자 (com.mysite.sbb.use..

article thumbnail
[VSCODE] SpringBoot CRUD게시판 만들기 - 레포지토리(Repository)
JAVA/SpringBoot CRUD Board 2022. 7. 1. 10:57

리포지터리 엔티티만으로는 데이터베이스에 데이터를 저장하거나 조회 할 수 없다. 데이터 처리를 위해서는 실제 데이터베이스와 연동하는 JPA 리포지터리가 필요하다. 리포지터리란? 리포지터리는 엔티티에 의해 생성된 데이터베이스 테이블에 접근하는 메소드들(예: findAll, save 등)을 사용하기 위한 인터페이스이다. 데이터 처리를 위해서는 테이블에 어떤 값을 넣거나 값을 조회하는 등의 CRUD(Create, Read, Update, Delete)가 필요하다. 이 때 이러한 CRUD를 어떻게 처리할지 정의하는 계층이 바로 리포지터리이다. 다음과 같이 QuestionRepository 인터페이스를 생성하자. [파일명:/sbb/src/main/java/com/mysite/sbb/QuestionRepository..

article thumbnail
[VSCODE] SpringBoot CRUD게시판 만들기 - 엔티티(Entity)
JAVA/SpringBoot CRUD Board 2022. 7. 1. 09:45

이제 SBB가 사용할 엔티티(Entity)을 만들어 보자. 엔티티는 데이터베이스 테이블과 매핑되는 자바 클래스를 말한다. SBB는 질문과 답변을 할 수 있는 게시판 서비스이다. 따라서 SBB에는 질문과 답변에 해당하는 엔티티가 있어야 한다. 엔티티는 모델 또는 도메인 모델이라고 부르기도 한다. 이것들을 구분하지 않고 테이블과 매핑되는 클래스를 엔티티라 지칭하겠다. 엔티티의 속성 구상하기 그렇다면 질문과 답변 엔티티에는 어떤 속성들이 필요한지 먼저 생각해 보자. 질문(Question) 엔티티에는 최소한 다음과 같은 속성이 필요하다. 속성명설명 id 질문의 고유 번호 subject 질문의 제목 content 질문의 내용 create_date 질문을 작성한 일시 마찬가지로 답변(Answer) 엔티티에는 최소한..

article thumbnail
[VSCODE] SpringBoot CRUD게시판 만들기 - JPA
JAVA/SpringBoot CRUD Board 2022. 6. 30. 17:39

우리가 만들 SBB는 질문 답변 게시판이다. 질문이나 답변을 작성하면 데이터가 생성된다. 그러므로 데이터를 저장하거나 조회하거나 수정하는 등의 기능을 구현해야 한다. 웹 서비스는 데이터를 처리할 때 대부분 데이터베이스를 사용한다. 그런데 데이터베이스를 사용하려면 SQL 쿼리(query)라는 구조화된 질의를 작성하고 실행하는 등의 복잡한 과정이 필요하다. 이때 ORM(object relational mapping)을 이용하면 자바 문법만으로도 데이터베이스를 다룰 수 있다. 즉, ORM을 이용하면 개발자가 쿼리를 직접 작성하지 않아도 데이터베이스의 데이터를 처리할 수 있다. 이 책은 독자가 데이터베이스 개념이나 SQL 쿼리의 기초는 안다고 가정한다. 그러나 독자가 이런 기초지식이 없어도 이 책의 실습을 따라..

article thumbnail
[VSCODE] SpringBoot CRUD게시판 만들기 - 컨트롤러
JAVA/SpringBoot CRUD Board 2022. 6. 30. 17:01

컨트롤러 URL 매핑을 추가하기 위해 MainController.java 파일을 다음과 같이 작성하자. [파일명:/sbb/src/main/java/com/mysite/sbb/MainController.java] package com.mysite.sbb; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class MainController { @RequestMapping("/sbb") public void index() { System.out.println("index"); } } MainController 클래스에 @C..

article thumbnail
[VSCODE] SpringBoot CRUD게시판 만들기 - 프로젝트의 구조
JAVA/SpringBoot CRUD Board 2022. 6. 30. 13:33

현재 SBB 프로젝트는 HelloController.java와 HelloLombok.java 파일만 생성한 상태다. 그런데 이보다 규모를 갖춘 프로젝트를 만들고자 한다면 프로젝트 구조를 잘 이해해야 한다. 이번 장에서는 스프링부트 프로젝트의 구조와 파일들에 대해서 알아보자. 스프링부트 프로젝트의 전체 구조는 다음과 같다. src/main/java 디렉터리 src/main/java 디렉터리의 com.mysite.sbb 패키지는 자바 파일을 작성하는 공간이다. 자바 파일로는 HelloController와 같은 스프링부트의 컨트롤러, 폼과 DTO, 데이터 베이스 처리를 위한 엔티티, 서비스 파일등이 있다. SbbApplication.java 파일 모든 프로그램에는 시작을 담당하는 파일이 있다. 스프링부트 애플..

article thumbnail
[VSCODE] SpringBoot CRUD게시판 만들기 - Lombok(롬복)
JAVA/SpringBoot CRUD Board 2022. 6. 30. 13:24

롬복 롬복(lombok)은 자바 클래스에 Getter, Setter, 생성자 등을 자동으로 만들어 주는 도구이다. SBB 프로젝트를 진행하면서 데이터를 처리하기 위한 엔티티 클래스나 DTO 클래스등을 사용해야 하는데 이때 클래스의 속성들에 대한 Getter, Setter를 만들어야 한다. 물론 Getter, Setter 메서드를 직접 만들어도 되지만 롬복(lombok)을 사용하면 좀 더 깔끔한 소스코드를 만들수 있다. 롬복 설치 롬복을 사용하려면 플러그인을 먼저 설치 해야한다. 다음의 URL에서 롬복 플러그인을 다운로드하자. https://projectlombok.org/download Download projectlombok.org 그리고 다운로드한 lombok.jar 파일을 다음과 같이 설치하자. j..

article thumbnail
[VSCODE] SpringBoot CRUD게시판 만들기 - 프로젝트 생성
JAVA/SpringBoot CRUD Board 2022. 6. 30. 11:43

스프링부트 프로젝트 생성하기 F1키를 눌러서 spring initializer를 통해 프로젝트를 생성하겠습니다. Gradle을 사용하여 프로젝트를 진행할 것입니다. 이전 포스팅에서 말씀 드린 것처럼 세팅하시면 됩니다. 이거부터 보신다면 잘 따라와주시기 바랍니다. 마지막으로 dependencies 부분은 위처럼 생성할 때 추가하셔도 되고 개발 진행중에도 추가하실 수 있으므로 지금 안하셔도 됩니다. HelloController http://localhost:8080/hello 와 같은 브라우저의 요청을 처리하기 위해서는 컨트롤러(Controller)가 필요하다. 컨트롤러는 서버에 전달된 클라이언트의 요청(URL과 전달된 파라미터 등)을 처리하는 자바 클래스이다. 위처럼 HelloController.java ..