Posts.java
-> Entity 클래스입니다.
package com.yeony.web.springbootwebproject.domain.posts;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import javax.persistence.*;
@Getter
@NoArgsConstructor
@Entity
public class Posts {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(length = 500,nullable = false)
private String title;
@Column(columnDefinition = "TEXT",nullable = false)
private String content;
private String author;
@Builder // control + Enter = 생성자 자동완성
public Posts(String title, String content, String author) {
this.title = title;
this.content = content;
this.author = author;
}
}
PostsRepository.java
-> Posts 클래스로 DB에 접근하기 위해 필요한 JpaRepository입니다.
Entity 클래스와 Repository는 함께 위치해있어야 합니다.
Entity 클래스는 기본 Repository 없이는 제대로 역할을 할 수가 없습니다.
따라서 Entity와 기본 Repository는 항상 domain 패키지에서 함께 관리합니다!
package com.yeony.web.springbootwebproject.domain.posts;
import org.springframework.data.jpa.repository.JpaRepository;
public interface PostsRepository extends JpaRepository<Posts,Long> {
}
PostsRepositoryTest.java
-> save, findAll() 기능을 테스트 하는 클래스입니다.
package com.yeony.web.springbootwebproject.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.Assertions.assertThat;
@RunWith(SpringRunner.class)
@SpringBootTest
public class PostsRepositoryTest {
@Autowired
PostsRepository postsRepository;
@After
public void cleanup(){
postsRepository.deleteAll();
}
@Test
public void 게시글저장_불러오기(){
//given
String title="테스트 게시글";
String content="테스트 본문";
postsRepository.save(Posts.builder()
.title(title)
.content(content)
.author("yeony@gmail.com")
.build());
// when
List<Posts> postsList=postsRepository.findAll();
// then
Posts posts=postsList.get(0);
assertThat(posts.getTitle()).isEqualTo(title);
assertThat(posts.getContent()).isEqualTo(content);
}
}
참고서적 및 링크
: 스프링 부트와 AWS로 혼자 구현하는 웹 서비스
'여니의 프로그래밍 study > Spring & Spring Boot' 카테고리의 다른 글
[스프링부트] 트랜잭션의 의미와 사용 이유 (0) | 2022.03.22 |
---|---|
[스프링부트] 실제로 실행된 쿼리 보는 방법 (0) | 2022.03.21 |
[스프링부트] Spring 웹 계층 (0) | 2022.03.21 |
[스프링부트] JPA가 무엇이고, 왜 써야 하는가!? (0) | 2022.03.21 |
[스프링부트] MockMvc 관련 메소드 (0) | 2022.03.21 |