[Spring] JPAλ₯Ό νμ©ν νμ μ 보 κ΄λ¦¬ μμ€ν ꡬννκΈ°
π 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 ν΄λμ€λ μμ λ‘κ·ΈμΈ κΈ°λ₯μ λν΄ ν¬μ€ν ν λ λ΄μ μμ μ΄λ€.