HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🚀
Random Bit Flip
/
[2기 - 훈] 8주차 RBF
[2기 - 훈] 8주차 RBF
[2기 - 훈] 8주차 RBF

[2기 - 훈] 8주차 RBF

주차
SpringBoot Part4
회고일
May 13, 2022
참여자
멘토
Property
tag
5주차 부터는 매일 진행하는 스크럼에서 나눈 내용을 기록할 계획입니다
1주 간의 수업과 과제를 진행하면서 새로 알게 된 개념이나 잘못 알았던 개념에 대해 이야기 해봅시다.

 

deleteAll vs deleteAllInBatch

deleteAll은 이름답지 않게 모든 데이터를 where id = ? 를 통해 하나하나씩 지운다.
delete from customers
위와 같은 쿼리를 사용하고 싶다면 deleteAllInBatch를 이용하자.
 

Primitive 값의 null 설정

  1. Rapper 클래스 활용(Integer)
  1. @PositiveOrZero어노테이션 활용
 

UUID - JPA

  • 36자리가 아니라 - 를 뺀 32글자수로 DB 에 들어간다. 굉장히 유용하다.
 

@DataJpaTest

notion image
  • JPA 에 초점을 맞춘 JPA 를 위한 테스트 애노테이션. JPA에 대한 설정만을 로드한다.
    • 애노테이션을 들여다보면 Transactional이나 EntityManager 과 같은 애노테이션들을 볼 수 있다.
  • 데이터베이스를 별도로 설정하지 않은 경우에는 인메모리 h2를 사용한다.
임베디드 데이터베이스를 사용하려는 경우에는 @AutoConfigureTestDatabase 를 결합한 @SpringBootTest 를 사용할 것을 권장한다.
DataJpaTest (Spring Boot 2.6.7 API)
@Target( value= TYPE)@Retention( value= RUNTIME)@Documented @Inherited @BootstrapWith( value=org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTestContextBootstrapper.class) ...
DataJpaTest (Spring Boot 2.6.7 API)
https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/test/autoconfigure/orm/jpa/DataJpaTest.html
@SpringBootTest / @DataJpaTest 차이점 과 JPA 영속성 컨텍스트
Repository layer의 테스트를 위해서 내장 Memory DB를 많이 사용합니다. Memory DB 를 사용하는 방법도 천차만별일텐데 크게는 2가지 정도라 생각됩니다. 두 방법의 차이점과 [Junit & JPA의 영속성 컨텍스트]로 인한 여러 가지 현상에 대해 정확히 알기 위해 글을 작성합니다. 위 2가지 방법 중 어느것을 선택해서 Repository Layer 테스트를 진행할까 고민하던 중 제 예상과는 다른 쿼리 로그가 찍히는 것을 확인했습니다.
@SpringBootTest / @DataJpaTest 차이점 과 JPA 영속성 컨텍스트
https://cobbybb.tistory.com/23
@SpringBootTest / @DataJpaTest 차이점 과 JPA 영속성 컨텍스트
 

@ElementCollection & @CollectionTable

Collection 형태의 Data를 저장할 때 유용하다.
OR 1:N 형태로 저장해도 된다.
@ElementCollection @CollectionTable(name = "ADDRESS", joinColumns = @JoinColumn(name = "member_id")) private List<Address> addressHistory = new ArrayList<>();
 

외래키 제약 조건

  • 이름을 직접 지정하지 않으면 임의로 생성된다.
  • 직접 지정해주면 더 좋음
 

@Enumerate(EnumType.String)

  • 글자수가 기본 255자로 생긴다
  • 너무 기니까 사이즈를 좀 줄어들어도 될 듯
 

UUID Compare

  • UUID는 생성 시간을 기준으로 비교된다 (ver.2 기준)