[스프링 부트] chapter 30. 스프링 데이터 6부 스프링 데이터 JPA 연동
스프링 데이터 6부 스프링 데이터 JPA 연동
의존성 추가
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
</dependency>
스프링 데이터 JPA 사용하기
- @Entity 클래스 만들기
- Repository 만들기
스프링 데이터 리파지토리 테스트 만들기
- H2 DB를 테스트 의존성에 추가하기
- @DataJpaTest (슬라이스 테스트) 작성
예제
@RunWith(SpringRunner.class)
@DataJpaTest
public class AccountRepositoryTest {
@Autowired
DataSource dataSource;
@Autowired
JdbcTemplate jdbcTemplate;
@Autowired
AccountRepository accountRepository;
@Test
public void di() throws SQLException {
Account account = new Account();
account.setUsername("juho");
account.setPassword("pass");
Account newAccount = accountRepository.save(account);
assertThat(newAccount).isNotNull();
Optional<Account> existingAccount = accountRepository.findByUsername(account.getUsername());
assertThat(existingAccount).isNotEmpty();
Optional<Account> nonExistingAccount = accountRepository.findByUsername("shinypillar");
assertThat(nonExistingAccount).isEmpty();
}
}
@Entity
public class Account {
@Id @GeneratedValue
private Long id;
private String username;
private String password;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
public interface AccountRepository extends JpaRepository<Account, Long> {
Optional<Account> findByUsername(String username);
}