티스토리 뷰
Spring Boot
스프링 부트와 AWS로 혼자 구현하는 웹 서비스 - 3
1. 프로젝트에 Spring Data JPA 적용하기
- build.gradle 의존성 등록
compile('org.springframework.boot:spring-boot-starter-data-jpa')
compile('com.h2database:h2')
- domain 패키지에 posts 패키지, Posts 클래스 생성
Posts.java
package com.springboot.domain.posts;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import javax.persistence.*;
@Getter
@NoArgsConstructor
@Entity // 카멜 케이스 -> 언더스코어 네이밍으로 테이블 이름 매칭
public class Posts {
@Id // 해당 테이블의 PK
@GeneratedValue(strategy = GenerationType.IDENTITY)
// PK 생성 규칙. GenerationType.IDENTITY 를 넣어줘야 auto_increment 됨
private Long id;
@Column(length = 500, nullable = false)
private String title;
@Column(columnDefinition = "TEXT", nullable = false)
private String content;
private String author;
@Builder
public Posts(String title, String content, String author) {
this.title = title;
this.content = content;
this.author = author;
}
}
* Entity 클래스에서는 절대 Setter 메소드를 만들지 않는다.
해당 필드의 값 변경이 필요한 경우 따로 메소드를 추가해야한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 | // 잘못된 사용 예 public class Order { public void setStatus(boolean status) { this.status = status; } } // 올바른 사용 예 public class Order { public void cancelOrder(){ this.status = false; } } | cs |
- 빌드 클래스를 사용하는 이유
1 2 3 4 5 6 7 8 9 10 11 | // a와 b의 위치를 바꾸면 어떤 문제가 발생하는지 모름 public Example(String a, String b) { this.a = a; this.b = b; } // 어느 필드에 어떤 값을 채워야 할지 명확 Example.builder() .a(a) .b(b) .build(); | cs |
- Post 클래스로 DB 접근하게 하는 JpaRepository 생성
PostsRepository.java
package com.springboot.domain.posts;
import org.springframework.data.jpa.repository.JpaRepository;
public interface PostRepository extends JpaRepository<Posts, Long> {}
2. Spring Data JPA 테스트 코드 작성
- PostRepository 테스트 코드 작성
PostsRepositoryTest.java
package com.springboot.domain.posts;
import org.junit.After;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.List;
import static org.assertj.core.api.Java6Assertions.assertThat;
@RunWith(SpringRunner.class)
@SpringBootTest
public class PostRepositoryTest {
@Autowired
PostRepository postRepository;
@After
public void cleanup(){
postRepository.deleteAll();
}
@Test
public void 게시글저장_불러오기() {
//given
String title = "테스트 게시글";
String content = "테스트 본문";
// 테이블 posts에 insert/update 쿼리 실행
postRepository.save(Posts.builder()
.title(title)
.content(content)
.author("unknown9732")
.build());
//when
List<Posts> postsList = postRepository.findAll();
//then
Posts posts = postsList.get(0);
assertThat(posts.getTitle()).isEqualTo(title);
assertThat(posts.getContent()).isEqualTo(content);
}
}
- src/main/resource 디렉토리에 application.properties 파일 생성
spring.jpa.show_sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL57Dialect
참고 : https://github.com/jojoldu/freelec-springboot2-webservice/issues/158
반응형
'활동 > 교육과정 중 기록' 카테고리의 다른 글
200319 Spring Boot (0) | 2020.03.19 |
---|---|
200318 Spring Boot (0) | 2020.03.18 |
200315 Spring Boot (0) | 2020.03.15 |
200314 Spring Boot (0) | 2020.03.14 |
200211 React (0) | 2020.02.11 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- #패스트캠퍼스 #프로그래밍대학생서포터즈 #올인원패키지 #컴퓨터공학 #성공하는프로그래밍공부법
- Fast Campus
- 코딩 면접
- 프로그래밍 온라인 강의
- c언어
- 운영체제
- 올인원 패키지
- 개발자 취업
- 자료구조
- 컴퓨터공학
- 패스트캠퍼스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함