320x100
지난 포스팅에서 데이터베이스와 사용자, 테이블을 만들었다.
이번 포스팅에서는 spring boot 설정과
생성한 테이블에서 데이터를 조회하고 추가해볼 것이다.
1. 프로젝트 설정
(1) Build.Gradle
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-rest'
implementation 'org.springframework.boot:spring-boot-starter-web'
annotationProcessor 'org.projectlombok:lombok'
compileOnly 'org.projectlombok:lombok'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
runtimeOnly 'com.oracle.database.jdbc:ojdbc8'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
//swagger
implementation 'io.springfox:springfox-boot-starter:3.0.0'
implementation 'io.springfox:springfox-swagger-ui:3.0.0'
//JPA mysql
implementation 'org.springframework.boot:spring-boot-starter-data-jpa' // JPA
implementation 'mysql:mysql-connector-java' // MySql
}
(2) application.properties
server.address=localhost
server.port=8080
# MySQL
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# DB Source URL
spring.datasource.url=jdbc:mysql://localhost:3306/PigPlace?useSSL=false&characterEncoding=UTF-8&serverTimezone=UTC
# DB username
spring.datasource.username=pigplace
# DB password
spring.datasource.password=1234
# mysql 사용
spring.jpa.database=mysql
# 처리시 발생하는 SQL을 보여줄 것인지 결정
spring.jpa.show-sql=true
# 프로젝트 실행시 자동으로 DDL(create, alter, drop) 을 생성할 것 인지 결정하는 설정
# create : 매번 테이블 생성을 새로 시도한다 / update : 변경이 필요한 경우 alter로 변경되고 테이블이 없는경우 create가 된다
spring.jpa.hibernate.ddl-auto=update
# 실제 JPA 구현체인 Hibernate가 동작하면서 발생하는 SQL을 포맷팅해서 출력한다 -> 실행되는 SQL의 가독성을 높여준다
spring.jpa.properties.hibernate.format_sql=true
# 디버깅 정보 출력
spring.jpa.properties.hibernate.use_sql_comments=true
# MySQL 상세 지정
spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect
# 로깅 레벨
#logging.level.org.hibernate=info
2. Entity, Repository 생성
(1) MemberEntiy
package com.pigplace.test.entity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
@Getter // getter 메소드 생성
@Builder // 빌더를 사용할 수 있게 함
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Entity(name="member") // 테이블 명을 작성
public class MemberEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long pid;
@Column(nullable = false, unique = true, length = 30)
private String username;
@Column(nullable = false, length = 100)
private String name;
public MemberEntity(String username, String name) {
this.username = username;
this.name = name;
}
}
(2) MemberRepository
package com.pigplace.test.repository;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import com.pigplace.test.entity.MemberEntity;
@Repository
public interface MemberRepository extends JpaRepository<MemberEntity, Long> {
}
(3) RestTestController
package com.pigplace.test.controller;
import java.util.ArrayList;
import java.util.List;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.pigplace.common.vo.ControllerSupport;
import com.pigplace.common.vo.ResponseEntity;
import com.pigplace.test.entity.MemberEntity;
import com.pigplace.test.repository.MemberRepository;
import com.pigplace.test.vo.TestVO;
import lombok.RequiredArgsConstructor;
@RestController // JSON 형태 결과값을 반환해줌 (@ResponseBody가 필요없음)
@RequiredArgsConstructor // final 객체를 Constructor Injection 해줌. (Autowired 역할)
@RequestMapping("/api")
public class RestTestController extends ControllerSupport{
private final MemberRepository memberRepository;
//멤버 조회
@GetMapping("member")
public ResponseEntity<?> findAllMember() {
List<MemberEntity> memberList = memberRepository.findAll();
return getOkResponse("조회성공~!", memberList);
}
//회원가입
@PostMapping("member")
public ResponseEntity<?> signUp() {
final MemberEntity member = MemberEntity.builder()
.username("test_user@gmail.com")
.name("test user")
.build();
// memberRepository.save(member);
return getOkResponse(memberRepository.save(member));
}
}
3. 결과
(1) 회원가입
(2) 멤버 조회
쿼리문을 직접 작성하다가
JPA를 사용하니까 어색하긴 한데 확실히 편하긴하다.
이번 프로젝트에서 복잡하 쿼리들은 사용하지 않을것 같아 유용하게 쓸 것 같다.
https://memostack.tistory.com/155
Spring Boot 에서 JPA 사용하기 (MySQL 사용)
MySQL 설정 MySQL 설치 MySQL 설치는 아래 글 참고 2020/10/30 - [Database/RDB] - MySQL 설치하기 (Mac OSX) MySQL 설치하기 (Mac OSX) MySQL 설치 본 글에서는 Homebrew 를 이용하여 MySQL 을 설치한다. $ brew..
memostack.tistory.com
320x100
'Spring Boot' 카테고리의 다른 글
[JPA] Persistable 인터페이스 (0) | 2022.11.22 |
---|---|
[Spring Boot] 개발환경 설정 -(6) profile별 로그 설정하기(hibernate 등) (0) | 2022.11.01 |
[Spring Boot] 개발환경 설정 -(5) mySQL JPA 연동하기-① (0) | 2022.06.30 |
[Spring Boot] 개발환경 설정 -(4) 응답 객체 생성하기 (0) | 2022.06.02 |
[Spring Boot] @Controller + @ResponseBody / @RestController (0) | 2022.05.30 |