DB Entity에서 이중으로 PK컬럼 설정하기

TopOfTheHead·2026년 5월 12일

MyBatis / JPA

목록 보기
9/10

PK를 외부에 노출되는 것을 방지하기 위해서 PK 역할의 컬럼을 추가하여 대체
。해당 방식을 통해 idcode를 조합한 구조로 PK로서 활용
▶ 기존 PKLong 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뿐만 아니라, 이중으로 검증이 가능.

profile
공부기록 블로그

0개의 댓글