• Keycloak, React, Spring Boot 연동: DB 생성하기

    2026. 6. 6.

    by. Daramu

    이전 포스팅으로 keycloak, react에 대한 연동을 완료하였다.

     

    이제는 Spring boot로 넘어갈 차례이다.

    과거 포스팅에서 말했던것과 같이, 가장 앞단에 Spring Cloud Gateway가 존재할 것이며 그 뒤로 백엔드가 존재하는 형식이 될 것이다.

     

    https://daramu.tistory.com/92

     

    여기서 위에 React와 Keycloak의 연동은 끝났으니, 다음으로 진행할 것은 SCG와 user 서비스, 그리고 Notification 서비스이다.

     

    우선 DB먼저 생성해야 한다.

    DB는 Postgresql을 사용했고, Docker로 띄워도 되고 로컬로 띄워도 된다. 접속이 중요한 것이니.

    https://www.postgresql.org/download/

     

    PostgreSQL: Downloads

     

    www.postgresql.org

     

     

    설치가 되었다면 DB를 생성해 접속한다.

    postgresql 설치시 pgadmin 이라는 전용 접속 tool을 함께 설치한다.

    본 포스팅은 이 툴 사용으로 진행하겠다.

     

    접속 후 Database를 생성한다.

     

    여기서 생성하면 되며, 나는 블로그 이름인 daramu로 이미 생성해 두었다.

     

    그리고 스키마(테이블)을 만들어야 한다.

     

    총 두개의 테이블을 만들것이다.

     

    하나는 유저 정보를 저장하는 users테이블이고, 한개는 이메일 인증을 위해 사용하는 email_verifications이다.

     

    이전 말하였지만 keycalok에 유저 정보가 있는 것이 맞다.

    하지만 그 정보는 아이디/패스워드/이메일 처럼 인증에 중점이 맞춰줘 있으므로, 닉네임, 가입일, 메신저라면 아이콘 등 추가적인 정보를 담기에는 무리가 있다.

     

    그래서 스키마를 생성해 준다. pgAmin 기준 상단 Tools -> Query Tool 을통해 쿼리문을 날릴 수 있다.

    CREATE TABLE users (
        id          UUID        PRIMARY KEY,
        username    VARCHAR(50)  NOT NULL UNIQUE,
        email       VARCHAR(255) NOT NULL UNIQUE,
        nickname    VARCHAR(50),
        created_at  TIMESTAMP    NOT NULL DEFAULT NOW(),
        updated_at  TIMESTAMP    NOT NULL DEFAULT NOW()
    );
    
    
    
    
    CREATE TABLE email_verifications (
        id          UUID        PRIMARY KEY DEFAULT gen_random_uuid(),
        email       VARCHAR(255) NOT NULL,
        code        VARCHAR(6)   NOT NULL,
        verified    BOOLEAN      NOT NULL DEFAULT FALSE,
        token       VARCHAR(64), 
        expires_at  TIMESTAMP    NOT NULL,
        created_at  TIMESTAMP    NOT NULL DEFAULT NOW()
    );
    
    CREATE INDEX idx_email_verifications_email ON email_verifications(email);
    CREATE INDEX idx_email_verifications_token ON email_verifications(token);

     

    여기서 users 테이블의 ID값이 UUID인 이유는 keycloak과 맞추기 위함이니, 혹시나 id처럼 1,2,3 증가로 설정했다면 전용 컬럼을 추가해 맞춰야한다.

     

    여기까지 되었다면, 다음으로는 본격적인 코드 생성으로 돌아오겠다.

    댓글