PK를 외부에 노출되는 것을 방지하기 위해서PK역할의컬럼을 추가하여 대체
。해당 방식을 통해id와code를 조합한 구조로PK로서 활용
▶ 기존PK인Long id의중복 위험을 해소하여UUID의 필요성이 없어짐.@Id @GeneratedValue(strategy = GenerationType.IDENTITY) protected Long id; @Column(unique = true, nullable = false) protected String code; @Override public boolean equals(Object object) { if (object == null || getClass() != object.getClass()) return false; Item item = (Item) object; return Objects.equals(id, item.id) && Objects.equals(code, item.code); } @Override public int hashCode() { return Objects.hash(id, code); }▶
비교검증을 목적으로equals()와hashCode()를 구현
@Test void Item_성공적으로_반환__200_OK(){ // begin Item settedItem = repository.save(item); // when Item founded = repository.findByCode(settedItem.getCode()); // then Assertions.assertThat(founded.getId()).isEqualTo(settedItem.getId()); Assertions.assertThat(founded.getCode()).isEqualTo(settedItem.getCode()); }▶ 다음
코드를 기준으로검증을 수행 시ID뿐만 아니라,이중으로 검증이 가능.