package com.example.springboot.entity;
import jakarta.persistence.*;
import lombok.Data;
import java.util.Set;
@Data
@Entity
public class Member {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(length = 50, unique = true, nullable = false)
private String username;
private String password;
private String uname;
private int age;
private String email;
// 권한 정보를 넣을 수 있는 컬럼이 필요
// 1명의 회원은 여러개의 권한을 가질 수 있다.
// M:N 관계를 ManyToMany
@ManyToMany(fetch = FetchType.EAGER) // 즉시로딩(EAGER), 지연로딩(LAZY)
@JoinTable(
name="member_roles",
joinColumns = @JoinColumn(name = "member_id") ,
inverseJoinColumns = @JoinColumn(name = "role_id")
)
private Set<Role> roles; // Role(권한)
}
package com.example.springboot.entity;
import jakarta.persistence.*;![](https://velog.velcdn.com/images/songmin_tech/post/c74515ca-a8e3-4f0f-af5f-df871ea15648/image.jpg)
import lombok.Data;
@Entity
@Data
public class Role {
// 1 : USER
// 2 : MANAGER
// 3 : ADMIN ~~~
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(unique = true)
private String name;
}
/*
Member(M) <관계T.> Role(N)
1:홍길동 1 1 1:USER/2:MANAGER/3:ADMIN
2:나길동 1 2
3:조길동
*/
application 에서 create 변경 > 실행 > 에러 > 무시하고 다시 실행
application 에서 update 변경
role 테이블에 권한 값 넣어주기
bulid.gradle에 방문하여 코드 추가
// 스프링 시큐리티 추가
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity6'
빌드하고 > 톰켓 재실행
구동하며 고유 비밀번호를 부여해줌
user / 위 이미지의 비번으로 로그인 클릭!