개발/React + Spring Boot 게시판 만들기

Back-end 개발 시작 DB 접속

RainyJune 2023. 5. 2. 16:09

이 프로젝트는 Back-end와 Front-end project 파일들을 개별로 관리하며 개발할 것이다.

Back-end에서는 Front-end에서 REST API를 통해 자료를 요청하고 등록/수정/삭제를 할 수 있도록 할 예정이다.


application.properties

#database connection 관련 property
#connection pool의 max size
spring.datasource.hikari.maximum-pool-size=4
#jdbc 연결 주소
spring.datasource.url=jdbc:postgresql://hostname:port/databasename
#DB user name
spring.datasource.username=username
#DB user password
spring.datasource.password=mypassword

#jpa properties
#jpa에서 사용할 dialect(방언)
spring.jpa.hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
#jpa에서 ddl을 자동으로 실행할 것인지 (none/update/create/create-drop/validate)
spring.jpa.hibernate.ddl-auto=update
#show-sql이 true인 경우 sql을 formatting해서 보여줄 것인지 여부
spring.jpa.properties.hibernate.format_sql=true
#sql 실행 시 console에 보여줄 것인지 여부
spring.jpa.show-sql=true

사용자 정보 테이블 (TB_USER)

사용자 정보 테이블은 위와 같이 구성했다.


REST API 구성

REST API 구성을 위한 구성요소로 Controller, DTO, Entity, Repository, Service들을 사용한다.

사용자 정보를 조회하기 위한 구성요소로 아래와 같이 구성했다.

 

각 클래스, 인터페이스는 src > main> java > projectName 하위에 있으며 경로는 projectName으로 축약한다.

 

projectName>entity>User

@Entity
@NoArgsConstructor
@ToString
@Getter
@Setter
@Table(name="TB_USER") // entity class명과 조회 대상 table명이 다르므로 Table을 기입해준다.
public class User {
	@Id
    private String userId;
    
    @Column
    private String password;
    
    ... TB_USER테이블에 JPA에서 참조할 column에 대해 모두 정의한다.
  }

 

projectName>dto>UserDto

@AllArgsConstructor
@NoArgsConstructor
@Getter
@ToString
public class UserDto {
	@JsonProperty("user_id") // DB field명은 user_id이고 match되는 field명은 userId로 다르므로 property명을 적어줌
	private String userId;
    
	private String password;
    
	...
    
	// User entity를 UserDto로 변환해준다.
	public static UserDto createUserDto(User user) {
		UserDto resultObj = new UserDto(
			user.getUserId(),
			user.getPassword(),
			...
		);
        
		return resultObj;
	}
}

 

projectName>service>UserService

public interface UserRepository extends CrudRepository<User, String> {
	//CrudRepository의 앞은 Entity class, 뒤는 Entity의 대표 값의 data type이다.
    
    @Override
    ArrayList<User> findAll();
}

 

projectName>controller>UserController

@RestController
public class UserController {
	@Autowired
	private UserRepository userRepository;
    
	@Autowired
	private UserService userService;
    
	@RequestMapping("/user/allUsers")
	public ArrayList<UserDto> inquireAllUsers() {
		return new ArrayList<UserDto>(userService.findAll());
	}
}

API 요청

서버 구동 후 localhost:8080/user/allUsers로 GET 요청을 보내면

위와 같이 정상적으로 TB_USER의 내용이 조회된다. (데이터를 미리 넣어놨다.)

 

 

'개발 > React + Spring Boot 게시판 만들기' 카테고리의 다른 글

Spring Security + JWT를 이용한 로그인 구현  (0) 2023.05.10
DB 구성하기  (0) 2023.05.02
Back-end 구성하기  (0) 2023.05.02
게시판 Project 시작  (0) 2023.05.02