이 프로젝트는 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 |