๐ ํ๋ก์ ํธ ํ๊ฒฝ์ค์
- preference → Build and run IntelliJ IDEA๋ก ๋ณ๊ฒฝํ๊ธฐ
- enable annotation option ์ฒดํฌ
![](https://blog.kakaocdn.net/dn/QUk1M/btrDc6velpM/ku7Zx02w0Lb32KZgwvPJXk/img.png)
๐ h2 ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค์น
- spring.io ๋ค์ด๊ฐ์ h2 database์ spring version ์ผ์นํ๋์ง ํ์ธ
- chmod 755 h2.bat ๊ถํ์ฃผ๊ณ ./h2.bat
- /datajpa.mv.db ํ์ผ ์์ฑ ํ์ธ → jdbc:h2:tcp://localhost//datajpa ์ด๋ ๊ฒ ์ ์!
![](https://blog.kakaocdn.net/dn/E9Rhv/btrDcslhnxV/3OpTiv7M1hxwW6PKDkgG2k/img.png)
๐ ์คํ๋ง ๋ฐ์ดํฐ JPA์ DB ์ค์ , ๋์ํ์ธ
Member entity, MemberJpaRpository ์์ฑ
@Entity
@Getter @Setter
public class Member {
@Id @GeneratedValue
private Long id;
private String username;
}
@Repository
public class MemberJpaRepository {
@PersistenceContext
private EntityManager em;
public Member save(Member member){
em.persist(member);
return member;
}
public Member find(Long id){
return em.find(Member.class, id);
}
}
test code ์์ฑ
@SpringBootTest
@Transactional
@Rollback(false)
public class MemberJpaRepositoryTest {
@Autowired
MemberJpaRepository memberJpaRepository;
@Test
public void testMember(){
Member member = new Member("memberA"); // -> Setter ์์ ๊ธฐ ๊ฐ๋ฅ
Member savedMember = memberJpaRepository.save(member);
Member findMember = memberJpaRepository.find(savedMember.getId());
assertThat(findMember.getId()).isEqualTo(member.getId());
assertThat(findMember.getUsername()).isEqualTo(member.getUsername());
assertThat(findMember).isEqualTo(member);
}
}
- jpa์ ๋ชจ๋ ๋ฐ์ดํฐ ๋ณ๊ฒฝ์ @Transactional ์์์ ์ด๋ฃจ์ด์ ธ์ผ ํ๋ค
- @Rollback(false) ↔ test ์ฟผ๋ฆฌ, ๋ฐ์ดํฐ๋ฅผ rollbackํ์ง ์์ ์ค์ db์ ๋ฐ์๋๋ค
- ์ค๋ฌด์์๋ ๊ฐ์ฒด๋ฅผ Member member = new Member(); → member.setUsername(”memberA”) ์ด๋ฐ์์ผ๋ก ์์ฑํ๊ธฐ๋ณด๋ค๋ ์ ์ฝ๋์ฒ๋ผ ์์ฑ์ parameter๋ฅผ ๋๊ฒจ์ ์์ฑํ๋ค ↔ ์ฌ๋งํ๋ฉด setter๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค๊ณ ํ๋ค.
MemberRepository ์ธํฐํ์ด์ค ์์ฑ, ๋์ผํ๊ฒ testcode ์์ฑ
public interface MemberRepository extends JpaRepository<Member, Long> {
}
- Member์ pk ํ์ Long
@SpringBootTest
@Transactional
@Rollback(false)
public class MemberRepositoryTest {
@Autowired
MemberRepository memberRepository;
@Test
public void testMember(){
Member member = new Member("memberA");
Member savedMember = memberRepository.save(member);
// nosearchElementException์ด ํฐ์ง ๊ฒ <-> ์๋๋ exception์ฒ๋ฆฌ ํด์ฃผ์ด์ผํจ
Member findMember = memberRepository.findById(savedMember.getId()).get();
assertThat(findMember.getId()).isEqualTo(member.getId());
assertThat(findMember.getUsername()).isEqualTo(member.getUsername());
assertThat(findMember).isEqualTo(member);
}
}
MemberRepository์์๋ JpaRepository๋ฅผ extendsํ์ฌ ์ธํฐํ์ด์ค๋ง ์ ์ํด์ฃผ์๋๋ฐ, MemberJpaRepository์ ๊ฐ์ ํ ์คํธ ์ฝ๋๋ฅผ ์คํ ๊ฐ๋ฅํ๋ค ↔ ์ด๊ฒ์ด ์คํ๋ง data jpa!!