Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

어리바리 신입 개발자의 얼렁뚱땅 개발 기록 ✨

[ Java / SpringBoot ] RESTful한 게시판 만들기2 / 스프링 부트 프로젝트 생성하고 데이터베이스 연결 & mybatis 설정 & DTO 작성 본문

REST API

[ Java / SpringBoot ] RESTful한 게시판 만들기2 / 스프링 부트 프로젝트 생성하고 데이터베이스 연결 & mybatis 설정 & DTO 작성

낫쏘링 2023. 9. 10. 18:39
728x90

[ 스프링 부트 프로젝트 생성 ]

1. File - New - Spring Starter Project

2. 프로젝트 이름은 board / 빌드 관리 도구는 Gradle / 자바 버전은 17으로 사용할 예정이다.
    기본적인 스프링부트 프로젝트 생성 및 설정은 이미 포스팅해놨다.
    이전 포스팅과 차이점은 Maven 대신 Gradle을 사용한다는 것 정도?
    (나는 이미 board라는 이름의 프로젝트를 생성해놔서 경고문이 뜬다.)

3.  사용할 모듈 의존성 주입
     Lombok : Getter, Setter, ToString, RequiredArgsConstructor 등 코드를 훨씬 간단하게 줄여준다.
     MyBatis Framework : 데이터 베이스를 쉽게 관리하기 위한 라이브러리
     Spring Data JDBC : 데이터 베이스 드라이버 로딩 (MySQL Driver 같은 라이브러리와 함께 사용해야한다.)
     MySQL Driver : 데이터 베이스 중 MySQL을 사용할 경우 
     Spring Boot DevTools : 코드를 수정했을 때 브라우저에 수정 내용을 자동으로 적용해준다.
     Spring Web : MVC 패턴 개발을 위한 Controller, Service 등의 어노테이션과
                           RESTful 개발을 위한 GetMapping PostMapping 등의 어노테이션 제공
     (이 것들 외에 파일 첨부 기능 구현할 때 필요한 모듈도 있는데 그건 그때가서 추가할 예정이다.)     

 

[ 데이터 베이스 연결 ]

1. application.properties 파일에 DB 연결 설정하고 로그를 위한 파일 가져오기 (log4jdbc 사용법)
    작성시 주의할 점은 각 라인 끝에 공백이 있으면 안된다. (공백 까지 문자열에 포함해버림)
#db 연결 설정
spring.datasource.driver-class-name=net.sf.log4jdbc.sql.jdbcapi.DriverSpy
spring.datasource.url=jdbc:log4jdbc:mysql://localhost:3306/rest_api?serverTimezone=UTC&characterEncoding=UTF8
spring.datasource.username=restapiid
spring.datasource.password=restapipw

# log-back file 설정
logging.config=classpath:logback-spring.xml

 

[ mybatis 설정 ]

1. application.properties 파일에 mybatis 설정
# mybatis 연동 설정

# 1. dao 파일 매핑
# classpath: => src/main/resources// 가 돼버림 이기 때문에 classpath:/mapper라고 작성하면 src/main/resources// 가 돼버림
# mapper/**/*.xml => 개발자가 정해 놓는 경로 설정 규칙
# mapper 폴더 안에 **폴더 안에 있는 xml 파일들은 모두 mapper로 사용한다.
mybatis.mapper-locations=classpath:mapper/**/*.xml

# 2. dto 패키지 매핑(dto가 모아져있는 패키지1,dto가 모아져있는 패키지2...... - 하나만 있을 경우 하나만 작성 가능)
# mybatis.type-aliases-package=board.mybatis.dto1,board.mybatis.dto2.... 이런식으로도 작성가능하지만
# **으로 한 번에 포함 시킬 수 있다. 
# 참고로 내가 설정한 패키지는 board.rest.api이기 때문에
# board.rest.api 패키지 안에 dto라는 패키지를 만들어주면 그 패키지 내에 있는 클래스가dto라는 것을 알려준다.
mybatis.type-aliases-package=board.**.dto

# 자바 변수(카멜)와 db컬럼(스테이크) 자동 매핑
mybatis.configuration.map-underscore-to-camel-case=true

 

[ DTO 작성 ]

DTO란 ? (이전 포스팅 이동하기)

// 이전 mybatis 설정 부분에서 board의 하위에 있는 패키지 중 
// dto 패키지에 있는 클래스는 모두 dto로 사용한다고 명시해뒀기 때문에 
// 패키지 이름은 board.rest.api.dto 로 생성해줬다.
package board.rest.api.dto;

import java.time.LocalDateTime;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

// 롬복을 사용하면 getter setter toString 메서드를 작성하지 않고 간단하게 사용 가능하다.
// @Data라는 어노테이션은 Getter, Setter, ToStirng을 한 번에 생성해주지만,
// 필요하지 않은 어노테이션도 포함하기 때문에 따로 작성해줬다.
@Getter
@Setter
@ToString
public class BoardDto {
	/* 컬럼 중에 deleted_yn은 dto에 저장하지 않는다.
	 * dto는 계층 간 데이터를 전달할 때 dto에 담아서 주고 받는데 deleted_yn은 데이터를 주고 받을 이유가
	 * 없기 때문이다. 조건에 따라 그냥 쿼리 상에서 Y와 N으로 수정하거나 조회해주면 된다.
	 */	
	private int boardIdx;
	private String title;
	private String contents;
	private int hitCnt;
	private String creatorId;
	private LocalDateTime createdDatetime;
	private String updaterId;
	private LocalDateTime updatedDtetime;

}
728x90