// 캐쉬도 없애고 thymeleaf고치고 서버 다시 띄울때 시간 절약
implementation 'org.springframework.boot:spring-boot-devtools'
package jpabook.jpashop;
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 org.springframework.transaction.annotation.Transactional;
import static org.junit.jupiter.api.Assertions.*;
@RunWith(SpringRunner.class)
@SpringBootTest
public class MemberRepositoryTest {
@Autowired MemberRepository memberRepository;
@Test
@Transactional
// 테스트 끝나도 데이터 유지
//@Rollback(false)
public void testMember() throws Exception {
//given
Member member = new Member();
member.setUsername("memberA");
//when
Long saveId = memberRepository.save(member);
Member findMember = memberRepository.find(saveId);
//then
assertTrue(findMember.getId().equals(member.getId()));
assertTrue(findMember.getUsername().equals(member.getUsername()));
assertTrue(findMember.equals(member));
}
}
assertTrue(findMember.equals(member)); 은 true이다.
왜냐하면 같은 transaction안에서 저장하고 조회하면 영속성 컨텍스트가 똑같다. 같은 영속성 컨텍스트에서는 아이디 값이 같으면 같은 엔티티로 식별한다.
https://github.com/gavlyukovskiy/spring-boot-data-source-decorator.git
// data추적하기
implementation("com.github.gavlyukovskiy:p6spy-spring-boot-starter:${version}")
하지만 운영 단계에서는 제외할 필요가 있다-> sql로그 분석이니까