5주차 부터는 매일 진행하는 스크럼에서 나눈 내용을 기록할 계획입니다
1주 간의 수업과 과제를 진행하면서 새로 알게 된 개념이나 잘못 알았던 개념에 대해 이야기 해봅시다.
deleteAll vs deleteAllInBatch
deleteAll은 이름답지 않게 모든 데이터를 where id = ? 를 통해 하나하나씩 지운다.
delete from customers
위와 같은 쿼리를 사용하고 싶다면 deleteAllInBatch를 이용하자.
Primitive 값의 null 설정
- Rapper 클래스 활용(Integer)
@
PositiveOrZero
어노테이션 활용
UUID - JPA
- 36자리가 아니라 - 를 뺀 32글자수로 DB 에 들어간다. 굉장히 유용하다.
@DataJpaTest

- JPA 에 초점을 맞춘 JPA 를 위한 테스트 애노테이션. JPA에 대한 설정만을 로드한다.
- 애노테이션을 들여다보면 Transactional이나 EntityManager 과 같은 애노테이션들을 볼 수 있다.
- 데이터베이스를 별도로 설정하지 않은 경우에는 인메모리 h2를 사용한다.
임베디드 데이터베이스를 사용하려는 경우에는 @AutoConfigureTestDatabase 를 결합한 @SpringBootTest 를 사용할 것을 권장한다.
@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 기준)