본문 바로가기
Spring

[Spring] Spring Boot JWT Tutorial - Entity 생성하기

by SooooooooS 2024. 2. 21.
728x90
인프런 - Spring Boot JWT Tutorial
 

[지금 무료] Spring Boot JWT Tutorial 강의 - 인프런

Spring Boot, Spring Security, JWT를 이용한 튜토리얼을 통해 인증과 인가에 대한 기초 지식을 쉽고 빠르게 학습할 수 있습니다., [사진] 본 강의는 Spring Boot, Spring Security를 이용해서 JWT 인증과 인가를 쉽

www.inflearn.com

※ 위 강의를 수강하면서 진행한 실습 정리 ※

1. application.properties 파일에 DB 정보 추가하기

나는 강의와 달리 MySQL을 사용하여 DB 설정이 다르다.

처음에는 실행해도 테이블이 생성이 되지 않아 다른 자료를 참고하다가 추가해주어야 하는 정보를 찾았다.

(참고 : https://dev-coco.tistory.com/85#head2)

spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.format_sql=true
  • show-sql : true 설정시 JPA 쿼리문 확인 가능
  • ddl-auto : DDL(create, alter, drop) 정의시 DB의 고유 기능을 사용
  • format-sql : JPA의 구현체인 Hibernate가 동작하면서 발생한 SQL의 가독성을 높여준다.

Hibernate란?

: 자바 언어를 위한 객체 관계 매핑 프레임워크 (출처 : Wiki)

2. Entity 생성

ERD

강의에서는 Lombok을 사용해서 코드를 단순화했지만 나는 사용하지 않았다.

Lombok을 사용하지 않는 대신 Constructor와 Getter, Setter를 생성해주었다.

 

1. User Entity

package board.boardspring.entity;

import jakarta.persistence.*;

import java.util.Set;

@Entity
@Table(name = "user")
public class User {

    @Id
    @Column(name = "user_id")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long userID;

    @Column(name = "username", length = 50, unique = true)
    private String username;

    @Column(name = "password", length = 100)
    private String password;

    @Column(name = "activated")
    private boolean activated;

    @ManyToMany
    @JoinTable(
            name = "user_authority",
            joinColumns = {@JoinColumn(name = "user_id", referencedColumnName = "user_id")},
            inverseJoinColumns = {@JoinColumn(name = "authority_name", referencedColumnName = "authority_name")}
    )
    private Set<Authority> authorities;

    //Constructor
    public User() {
    }

    public User(Long userID, String username, String password, boolean activated, Set<Authority> authorities) {
        this.userID = userID;
        this.username = username;
        this.password = password;
        this.activated = activated;
        this.authorities = authorities;
    }

    //Getter & setter
    public Long getUserID() {
        return userID;
    }

    public void setUserID(Long userID) {
        this.userID = userID;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public boolean isActivated() {
        return activated;
    }

    public void setActivated(boolean activated) {
        this.activated = activated;
    }

    public Set<Authority> getAuthorities() {
        return authorities;
    }

    public void setAuthorities(Set<Authority> authorities) {
        this.authorities = authorities;
    }
}

 

2. Authority Entity

package board.boardspring.entity;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.Table;

@Entity
@Table(name = "authority")
public class Authority {

    @Id
    @Column(name = "authority_name", length = 50)
    private String authorityName;

    //Contructor
    public Authority() {
    }

    public Authority(String authorityName) {
        this.authorityName = authorityName;
    }

    //Getter & Setter
    public String getAuthorityName() {
        return authorityName;
    }

    public void setAuthorityName(String authorityName) {
        this.authorityName = authorityName;
    }
}

3. Spring 실행하기

테이블을 생성하는 DDL 실행
GUI로 테이블 생성 확인

728x90

'Spring' 카테고리의 다른 글

[Spring] Docker로 띄운 MySQL JDBC로 연결하기  (0) 2024.02.13
[Spring] 프로젝트 생성하기  (0) 2024.02.12