실전! 스프링 부트와 JPA 활용1 강의를 듣고 정리한 내용입니다.
➡️ 강의 : https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-JPA-%ED%99%9C%EC%9A%A9-1/dashboard
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발 강의 | 김영한 - 인프런
김영한 | 실무에 가까운 예제로, 스프링 부트와 JPA를 활용해서 웹 애플리케이션을 설계하고 개발합니다. 이 과정을 통해 스프링 부트와 JPA를 실무에서 어떻게 활용해야 하는지 이해할 수 있습니
www.inflearn.com
5. JPA와 DB 설정, 동작확인
Tip) TDD 템플릿 만들기
- ctrl + alt + s ⇒ Settings
- Live Templates 생성
- Abbreviation : tdd
- Template text
@Test public void $NAME$() throws Exception { //given $END$ //when //then }
- define > java 설정
💡참고
https://www.inflearn.com/questions/110167/인텔리j-tdd-라이브템플릿-생성하는-방법-입니다
TestCode
- @Transactional 어노테이션이 테스트 케이스에 있으면, 테스트 종료후 롤백 → DB에 데이터 생기지 않음
- 만약, DB에서 확인하고 싶다면.. @Rollback(value = false) 추가
@Transactional @Rollback(value = false)
영속성 컨텍스트에서 식별자가 같으면 같은 엔티티이다
- 코드
package jpabook.jpashop; import org.junit.jupiter.api.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.annotation.Rollback; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.transaction.annotation.Transactional; import static org.assertj.core.api.Assertions.*; import static org.junit.Assert.*; @RunWith(SpringRunner.class) @SpringBootTest public class MemberRepositoryTest { @Autowired MemberRepository memberRepository; @Test @Transactional @Rollback(value = 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 assertThat(findMember.getId()).isEqualTo(member.getId()); assertThat(findMember.getUsername()).isEqualTo(member.getUsername()); assertThat(findMember).isEqualTo(member); // true /* 영속성 컨텍스트에서 식별자가 같으면 같은 엔티티 */ System.out.println("findMember == member: " + (findMember == member)); } }
쿼리 파라미터 로그 남기기
- 스프링 부트 2.x, hibernate5
- org.hibernate.type: trace
- 스프링 부트 3.x, hibernate6
- org.hibernate.orm.jdbc.bind: trace
- application.yml logging 설정
logging: level: org.hibernate.SQL: debug org.hibernate.orm.jdbc.bind: trace
- 외부 라이브러리 사용
- 참고
- 쿼리 파라미터를 로그로 남기는 외부 라이브러리는 시스템 자원을 사용.
- 개발 단계에서는 편하게 사용해도 된다.
- 하지만 운영에 적용하려면 꼭 성능테스트를 하고 사용하는 것이 좋다.
728x90
'Spring Boot' 카테고리의 다른 글
[Spring] Redis를 이용한 대기열 관리 (0) | 2024.12.28 |
---|---|
[Spring] Transaction 분리를 통한 성능 개선 (0) | 2024.12.27 |
[Spring] Lock을 이용한 동시성 제어 - 낙관적락/비관적락/분산락 (2)적용 (0) | 2024.12.27 |
[Spring] Lock을 이용한 동시성 제어 - 낙관적락/비관적락/분산락 (1)개념 (1) | 2024.12.26 |
[Spring] RedisSerializer 알고 쓰기! 종류 별 특징과 주의 사항 (0) | 2024.12.04 |