[프로젝트] 웹 TripRecorder - day01

_bean_·2023년 5월 31일
0
post-thumbnail

개요

개발 목적

  • React와 SpringBoot를 학습한다.
  • API 사용법을 학습한다.
  • 이미지 저장을 위한 클라우드를 학습한다.

개발 환경

  • 언어: JAVA, JavaScript, SQL
  • 사용 툴: STS 4.8.1.RELEASE, VSCode, MySQL Workbench 8.0
  • 사용 라이브러리 및 API: SpringBoot, React, CLOVA Document OCR
  • DB: MySQL

테이블 구조

프로젝트 구조

오류 및 문제점

1. No matching variant of org.springframework.boot:spring-boot-gradle-plugin:3.1.0 was found.

  • 문제점: STS4.8 Spring Boot 3.1.0 버전에서 Gradle 타입으로 프로젝트를 생성하면 프로젝트가 생성되지 않는다.
  • 해결 방안: build.gradle에서 spring boot 버전을 낮춘다.
// 변경 전
id 'org.springframework.boot' version '3.1.0'

// 변경 후
id 'org.springframework.boot' version '2.4.5'

2. Error creating bean with name 'dataSource' defined in class path resource

  • 문제점: Spring Boot와 MySQL 연결 시 MySQL 드라이버를 찾을 수 없다.
  • 해결 방안: dependency를 Maven 중앙 저장소의 값으로 변경한다.
dependencies {
  implementation group: 'com.mysql', name: 'mysql-connector-j', version: '8.0.32'
}

3. JPA Default value

  • 문제점: JPA를 만들 때 default 값을 설정해도 builder를 통해 생성하면 기본 생성자를 호출하기 때문에 null 값이 들어간다.
  • 해결 방안: Builder.Default를 사용한다.
// 변경 전 1
// 테이블 조건에는 default 값이 잘 들어가지만 builder를 통해 생성 시 null이 들어간다.
@Column(columnDefinition = "VARCHAR(255) default '브론즈'")
private String userLevel;
public UserVO() {
  this.userLevel = userLevel == null ? "브론즈" : this.userLevel;
}

// 변경 전 2
@DynamicInsert
public class UserVO{
  @ColumnDefault("브론즈")
  private String userLevel;
}

// 변경 후
@Builder.Default
private String userLevel = "브론즈";

4. JPA @ManyToOne

  • 문제점: follow 테이블의 follower, following 둘 다 user 테이블에서 참조한다.
  • 해결 방안: 각각 ManyToOne 연관관계를 설정한다.
public class FollowVO {
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	private Long followNo;
	
	@ManyToOne
	@JoinColumn(name="follower")
	private UserVO follower;
	
	@ManyToOne
	@JoinColumn(name="following")
	private UserVO following;	
}

진행 상황

1. DB 사용자 설정

create user trippers@'%' identified by '1234';
grant all privileges on triprecorder.* to trippers@'%';
create database triprecorder;

2. Spring Boot 환경설정

3. JPA를 이용해 user, profile, follow 테이블 생성


참고 자료

profile
어쩌다 풀스택 :3

0개의 댓글