JAVA/Practice

[Spring] JPAλ₯Ό ν™œμš©ν•œ νšŒμ› 정보 관리 μ‹œμŠ€ν…œ κ΅¬ν˜„ν•˜κΈ°

ITs Min 2024. 4. 2. 11:44

πŸ” JPA(Java Persistence API)

JPA(Java Persistence API)λŠ” μžλ°” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ 객체와 κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€ κ°„μ˜ 맀핑을 λ‹¨μˆœν™”ν•˜λŠ” ν‘œμ€€ API이닀. 이번 ν¬μŠ€νŠΈμ—μ„œλŠ” JPAλ₯Ό ν™œμš©ν•˜μ—¬ νšŒμ› 정보 관리 μ‹œμŠ€ν…œμ„ κ΅¬ν˜„ν•œλ‹€.


πŸ”νšŒμ› 정보 μ—”ν‹°ν‹° 클래슀 섀계

νšŒμ› 정보λ₯Ό κ΄€λ¦¬ν•˜κΈ° μœ„ν•œ μ—”ν‹°ν‹° 클래슀인 UserEntityκ°€ ν•„μš”ν•˜λ‹€. 이 ν΄λž˜μŠ€λŠ” MEMBER ν…Œμ΄λΈ”κ³Ό λ§€ν•‘λœλ‹€. UserEntity 클래슀의 μ£Όμš” 속성은 λ‹€μŒκ³Ό κ°™λ‹€.

  • id: νšŒμ› μ‹λ³„μž(μžλ™ 생성)
  • username: νšŒμ› 이름
  • email: νšŒμ› 이메일 (κΈ°λ³Έ ν‚€)
  • pw: νšŒμ› λΉ„λ°€λ²ˆν˜Έ
  • nickname: νšŒμ› λ‹‰λ„€μž„
  • ph: νšŒμ› μ „ν™”λ²ˆν˜Έ
  • birth: νšŒμ› 생일
  • gender: νšŒμ› 성별

πŸ” νšŒμ› 정보 μ—”ν‹°ν‹° 클래슀 κ΅¬ν˜„

μ£Όμ–΄μ§„ UserEntity 클래슀λ₯Ό μ‚¬μš©ν•˜μ—¬ νšŒμ› 정보 μ—”ν‹°ν‹°λ₯Ό κ΅¬ν˜„ν•œλ‹€. ν•΄λ‹Ή ν΄λž˜μŠ€λŠ” @Entity μ–΄λ…Έν…Œμ΄μ…˜μ„ 톡해 JPAκ°€ μ—”ν‹°ν‹°μž„μ„ μΈμ‹ν•œλ‹€. λ˜ν•œ, 각 ν•„λ“œλŠ” λ°μ΄ν„°λ² μ΄μŠ€ ν…Œμ΄λΈ”μ˜ 컬럼과 λ§€ν•‘λœλ‹€.

package infinitystone.chalKag.biz.customOAuth2;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import jakarta.persistence.Transient;
import lombok.Getter;
import lombok.Setter;

@Entity
@Getter
@Setter
@Table(name = "MEMBER")
public class UserEntity {

    
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Transient
    private String id;
    
    @Transient
    private String role;
    
    @Column(name="MEMBER_name")
    private String username;
    
    @Id
    @Column(name="MEMBER_id")
    private String email;
    
    @Column(name="MEMBER_pw")
    private String pw;
    
    @Column(name="MEMBER_nickname")
    private String nickname;
    
    @Column(name="MEMBER_ph")
    private String ph;
    
    @Column(name="MEMBER_birth")
    private String birth;
    
    @Column(name="MEMBER_gender")
    private String gender;
    
    
    
}

 


πŸ” νšŒμ› 정보 관리 κΈ°λŠ₯ κ΅¬ν˜„

νšŒμ› 정보λ₯Ό 생성, 쑰회, μˆ˜μ •, μ‚­μ œν•˜λŠ” κΈ°λŠ₯을 JPAλ₯Ό 톡해 κ΅¬ν˜„ν•œλ‹€. 이λ₯Ό μœ„ν•΄ UserRepository μΈν„°νŽ˜μ΄μŠ€μ™€ UserService 클래슀λ₯Ό λ§Œλ“€μ–΄μ•Ό ν•œλ‹€. μœ„μ— μžˆλŠ” νšŒμ› 정보λ₯Ό ν™œμš©ν•΄μ„œ μ†Œμ…œ 둜그인 κΈ°λŠ₯을 μ™„μ„±ν–ˆλŠ”λ° UserRepository와 UserService ν΄λž˜μŠ€λŠ” μ†Œμ…œ 둜그인 κΈ°λŠ₯에 λŒ€ν•΄ ν¬μŠ€νŒ… ν•  λ•Œ 담을 μ˜ˆμ •μ΄λ‹€.