I'm developing an API with Spring boot where I encounter this issue. I want to generate 6 digits number every time there's a new register to insert into column referral_code, where it has to be UNIQUE. Here is my entity
@Entity
public class StoreEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    @Column(name = "store_name", columnDefinition = "varchar(255) default '' not null")
    private String storeName;
    @Column(name = "referral_code", columnDefinition = "varchar(255) default '' not null")
    private String referralCode;
    @Column(name = "created_at", columnDefinition = "timestamp default current_timestamp not null")
    private Timestamp createdAt = new Timestamp(System.currentTimeMillis());
}
in my register service, I have created a generate a random number with this method (reference)
protected String createRandomReferralCode(){
        Random r = new Random();
        int numbers = 100000 + (int)(r.nextFloat() * 899900);
        return String.valueOf(numbers);
    }
so when the new store register, I'm getting the number from the above function and set it to referralCode. Here's the register function
public StoreEntity register(StoreDto storeDto) {
        StoreEntity storeEntity = new StoreEntity();
        //----call to generate random 6 digit code-----
        String generateReferralCode = createRandomReferralCode();
        storeEntity.setStoreName(storeDto.getStoreName());
        storeEntity.setReferralCode(generateReferralCode);
        return storeDao.save(storeEntity);
}
now, my problem is how can we ensure that the number getting from the above function createRandomReferralCode() always generates a unique one?
ATTEMPTS: in my repository, I've created a function findReferralCode, to check if the referral code already exists in the table row; however, doing so seems to slow down the application's performance.
@Repository
public interface StoreDao extends JpaRepository<StoreEntity, Long> {
    StoreEntity findReferralCode(String referralCode);
}
