이제 SBB가 사용할 엔티티(Entity)을 만들어 보자. 엔티티는 데이터베이스 테이블과 매핑되는 자바 클래스를 말한다. SBB는 질문과 답변을 할 수 있는 게시판 서비스이다. 따라서 SBB에는 질문과 답변에 해당하는 엔티티가 있어야 한다. 엔티티는 모델 또는 도메인 모델이라고 부르기도 한다. 이것들을 구분하지 않고 테이블과 매핑되는 클래스를 엔티티라 지칭하겠다. 엔티티의 속성 구상하기 그렇다면 질문과 답변 엔티티에는 어떤 속성들이 필요한지 먼저 생각해 보자. 질문(Question) 엔티티에는 최소한 다음과 같은 속성이 필요하다. 속성명설명 id 질문의 고유 번호 subject 질문의 제목 content 질문의 내용 create_date 질문을 작성한 일시 마찬가지로 답변(Answer) 엔티티에는 최소한..
우리가 만들 SBB는 질문 답변 게시판이다. 질문이나 답변을 작성하면 데이터가 생성된다. 그러므로 데이터를 저장하거나 조회하거나 수정하는 등의 기능을 구현해야 한다. 웹 서비스는 데이터를 처리할 때 대부분 데이터베이스를 사용한다. 그런데 데이터베이스를 사용하려면 SQL 쿼리(query)라는 구조화된 질의를 작성하고 실행하는 등의 복잡한 과정이 필요하다. 이때 ORM(object relational mapping)을 이용하면 자바 문법만으로도 데이터베이스를 다룰 수 있다. 즉, ORM을 이용하면 개발자가 쿼리를 직접 작성하지 않아도 데이터베이스의 데이터를 처리할 수 있다. 이 책은 독자가 데이터베이스 개념이나 SQL 쿼리의 기초는 안다고 가정한다. 그러나 독자가 이런 기초지식이 없어도 이 책의 실습을 따라..
컨트롤러 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..
현재 SBB 프로젝트는 HelloController.java와 HelloLombok.java 파일만 생성한 상태다. 그런데 이보다 규모를 갖춘 프로젝트를 만들고자 한다면 프로젝트 구조를 잘 이해해야 한다. 이번 장에서는 스프링부트 프로젝트의 구조와 파일들에 대해서 알아보자. 스프링부트 프로젝트의 전체 구조는 다음과 같다. src/main/java 디렉터리 src/main/java 디렉터리의 com.mysite.sbb 패키지는 자바 파일을 작성하는 공간이다. 자바 파일로는 HelloController와 같은 스프링부트의 컨트롤러, 폼과 DTO, 데이터 베이스 처리를 위한 엔티티, 서비스 파일등이 있다. SbbApplication.java 파일 모든 프로그램에는 시작을 담당하는 파일이 있다. 스프링부트 애플..
롬복 롬복(lombok)은 자바 클래스에 Getter, Setter, 생성자 등을 자동으로 만들어 주는 도구이다. SBB 프로젝트를 진행하면서 데이터를 처리하기 위한 엔티티 클래스나 DTO 클래스등을 사용해야 하는데 이때 클래스의 속성들에 대한 Getter, Setter를 만들어야 한다. 물론 Getter, Setter 메서드를 직접 만들어도 되지만 롬복(lombok)을 사용하면 좀 더 깔끔한 소스코드를 만들수 있다. 롬복 설치 롬복을 사용하려면 플러그인을 먼저 설치 해야한다. 다음의 URL에서 롬복 플러그인을 다운로드하자. https://projectlombok.org/download Download projectlombok.org 그리고 다운로드한 lombok.jar 파일을 다음과 같이 설치하자. j..
스프링부트 프로젝트 생성하기 F1키를 눌러서 spring initializer를 통해 프로젝트를 생성하겠습니다. Gradle을 사용하여 프로젝트를 진행할 것입니다. 이전 포스팅에서 말씀 드린 것처럼 세팅하시면 됩니다. 이거부터 보신다면 잘 따라와주시기 바랍니다. 마지막으로 dependencies 부분은 위처럼 생성할 때 추가하셔도 되고 개발 진행중에도 추가하실 수 있으므로 지금 안하셔도 됩니다. HelloController http://localhost:8080/hello 와 같은 브라우저의 요청을 처리하기 위해서는 컨트롤러(Controller)가 필요하다. 컨트롤러는 서버에 전달된 클라이언트의 요청(URL과 전달된 파라미터 등)을 처리하는 자바 클래스이다. 위처럼 HelloController.java ..
이 게시물은 점프 투 스프링부트를 공부하면서 기록 및 복습하기 위해 작성한 포스팅입니다. 스프링부트 버전 스프링부트(Spring Boot) 2.6.9 버전을 기준으로 한다. 자바 버전 자바 11 버전을 기준으로 한다. 부트스트랩 버전 부트스트랩 5.1.3 버전을 기준으로 한다. (5.x.x와 같이 메이저 5 버전대는 호환이 가능하다. 단, 3.x, 4.x 버전의 부트스트랩은 사용할수 없다.) 윈도우즈에 JDK 설치 PowerShell을 관리자권한으로 실행해줍니다. choco install openjdk11 위의 언급했듯이 jdk11버전으로 진행할 것이기에 choco 라이브러리를 활용해 openjdk를 쉽게 설치해보겠습니다. choco install maven 그리고 이번 프로젝트에서는 사용하지 않지만 m..
Spring Boot 를 기반으로 구현한 간단한 쇼핑몰 웹 사이트 GitHub 사이트 프로젝트 진행 과정 목록 🎯 프로젝트 개발 동기 및 목표 스프링, 스프링 부트, JPA, 시큐리티 등의 기술스택들을 이론적으로 학습한 뒤에 실제로 어떻게 동작하는지 이해하기 위해서 간단한 쇼핑몰 프로젝트를 구현해봄. 흔한 쇼핑몰 프로젝트일지라도 완성하는 것에 초점을 두지 않고, 사용되는 기술에 대한 정확한 개념 및 사용법, 그리고 동작원리에 대해서 초점을 맞추었고, 또한 개발 과정에서 맞이하는 에러 및 궁금증들을 자세하게 찾아보고 정리하면서 전체적인 흐름 파악을 목표로 두었으며 프론트보다는 백엔드에 좀 더 집중하였음. ⚙️ 프로젝트 개발 환경 운영체제 : MacOs (Big Sur) 통합개발환경(IDE) : VSCODE..