[Day-3] JPA와 DB설정, 동작확인WEB JAVA SPRING/PROJECT2023. 8. 25. 10:41
Table of Contents
<JPA와 DB설정, 동작확인>
#파일구조
application.yml
spring: #띄어쓰기 제대로.....
datasource: #2칸
url: jdbc:h2:tcp://localhost/~/jpashop #4칸 , DB접속 url
username: sa
password:
driver-class-name: org.h2.Driver
jpa: #2칸
hibernate: #4칸
ddl-auto: create #6칸
properties: #4칸
hibernate: #6칸
# show_sql: true #8칸
format_sql: true #8칸
logging.level: #없음
org.hibernate.SQL: debug #2칸
org.hibernate.type: trace #2
MemberRepository
@Repository //==DAO
public class MemberRepository {
@PersistenceContext
EntityManager em; //엔티티 매니저를 주입해준다.
//아이디 정보 저장
public Long save(Member member){
em.persist(member);
return member.getId();
}
//아이디 조회
public Member find(Long id){
return em.find(Member.class ,id);
}
}
여기서 테스트코트 작성
MemberRepositoryTest
@RunWith(SpringRunner.class) //spring과 관련된 test를 하겠다
@SpringBootTest
public class MemberRepositoryTest {
@Autowired
MemberRepository memberRepository;
@Test
@Transactional //entity 매니저를 통한 데이터 변경은 트랜잭션안에서 이루어져야 하기 때문에 꼭 넣기 (스프링으로 import)
@Rollback(false)
public void testMember() throws Exception {
//given : set한 member를 가지고
Member member = new Member();
member.setUsername("memberA"); //set
//when : 저장하고, 찾으면
Long saveID = memberRepository.save(member); // ctrl + alt + v
Member findMember =memberRepository.find(saveID);
//then(검증)
Assertions.assertThat(findMember.getId()).isEqualTo(member.getId());
Assertions.assertThat(findMember.getUsername()).isEqualTo(member.getUsername());
Assertions.assertThat(findMember).isEqualTo(member); //true id값이 같으면 같은 엔티티로 인식
System.out.println("findMember ==member " + (findMember ==member));
}
}
롤백 해서 안뜬거 ->@Rollback(false) 추가
Assertions.assertThat(findMember).isEqualTo(member); //true id값이 같으면 같은 엔티티로 인식
#쿼리 파라미터 로그남기기
->(?, ?) 로 남는거..헷갈려서 SQL 실행 파라미터를 로그로 남긴다.
이것보다 더 편리하게 보고싶다면
build.gradle에
implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.6' 추가 후 새로고침
'WEB JAVA SPRING > PROJECT' 카테고리의 다른 글
[Day-6] 엔티티 설계 (연관관계) (0) | 2023.08.25 |
---|---|
[Day-5] 엔티티 클래스 개발2 (0) | 2023.08.25 |
[Day-4] 도메인 모델과 테이블 설계, 엔티티 클래스 개발 1 (0) | 2023.08.25 |
[Day-2] 라이브러리, H2 DB (0) | 2023.08.25 |
[Day-1] 초기 설정 (0) | 2023.08.25 |