implementation('org.springframework.boot:spring-boot-starter-data-jpa')
implementation('com.h2database:h2')
spring-boot-starter-data-jpa
: 스프링 부트용 Spring Data Jpa 추상화 라이브러리h2
: 인메모리 관계형 데이터 베이스@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
public Posts(String title, String content, String author){
this.title = title;
this.content = content;
this.author = author;
}
}
@Entity
: 테이블과 리으될 클래스임을 나타냄
@Id
: 해당 테이블의 PK 필드를 나타냄
@GeneratedValue
: PK의 생성 규칙을 나타냄
GenerationType.IDENTITY
옵션을 추가해야만 auto_increment가 됨@Column
: 테이블의 컬럼을 나타냄
@NoArgsConstructor
: 기본 생성자 자동 추가
@Builder
: 빌더 패턴 클래스 생성
주의) Entity 클래스에서는 절대 Setter 메소드를 만들지 않음
public interface PostsRepository extends JpaRepository<Posts, Long> {
}
@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("sgn03077@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);
}
}
@After
: Junit에서 단위 테스트가 끝날 때마다 수행되는 메소드 지정이동욱, 스프링 부트와 AWS로 혼자 구현하는 웹 서비스