μν°ν°(Entity)
JPA μν°ν°λ λ°μ΄ν°λ² μ΄μ€μ ν
μ΄λΈκ³Ό 맀νλλ μμμ± κ°μ²΄
β’
μ£Όμ μ΄λ
Έν
μ΄μ
β’
μν°ν° μμ μ½λ
μ£Όμ μ΄λ
Έν
μ΄μ
μ΄λ
Έν
μ΄μ
| μ€λͺ
|
@Entity | ν΄λΉ ν΄λμ€λ₯Ό JPA μν°ν°λ‘ μ§μ |
@Table(name="table_name") | μν°ν°κ° 맀νλ ν
μ΄λΈ μ§μ |
@Id | κΈ°λ³Έ ν€(PK) νλ μ§μ |
@GeneratedValue
(strategy=GenerationType.IDENTITY) | μλ μ¦κ°νλ PK μ€μ |
@Column
(name="column_name", nullable=false, length=100) | νΉμ μ»¬λΌ λ§€ν λ° μμ± μ€μ |
@ManyToOne | λ€λμΌ(N:1) κ΄κ³ μ€μ |
@OneToMany
(mappedBy="board") | μΌλλ€(1:N) κ΄κ³ μ€μ |
@JoinColumn
(name="foreign_key") | μΈλ ν€(FK) 맀ν |
@Enumerated
(EnumType.STRING) | μ΄κ±°ν(Enum) νμ
맀ν |
@Temporal
(TemporalType.TIMESTAMP) | λ μ§ λ° μκ° νμ
맀ν |
@CreatedDate | μμ± μκ° μλ μ μ₯(Auditing κΈ°λ₯ νμ©) |
@LastModifiedDate | μμ μκ° μλ μ μ₯(Auditing κΈ°λ₯ νμ©) |
@Version | λκ΄μ λ½(Optimistic Lock) μ μ© |
@Transient | μμμ± κ΄λ¦¬ μ μΈ(컬λΌμΌλ‘ 맀νλμ§ μμ) |
μν°ν° μμ μ½λ
Users μν°ν°
import jakarta.persistence.*;
import lombok.*;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import java.time.LocalDateTime;
import java.util.List;
@Entity
@Table(name = "users")
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class Users {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false, length = 50)
private String username;
@Column(nullable = false, unique = true)
private String email;
@Column(nullable = false)
private String password;
@Enumerated(EnumType.STRING)
@Column(nullable = false)
private Role role;
@CreatedDate
@Column(updatable = false)
private LocalDateTime createdAt;
@LastModifiedDate
private LocalDateTime updatedAt;
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true)
private List<Boards> boards;
public enum Role {
USER, ADMIN
}
}
Java
볡μ¬
Boards μν°ν°
import jakarta.persistence.*;
import lombok.*;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import java.time.LocalDateTime;
@Entity
@Table(name = "boards")
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class Boards {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false, length = 100)
private String title;
@Column(nullable = false, columnDefinition = "TEXT")
private String content;
@ManyToOne
@JoinColumn(name = "user_id", nullable = false)
private Users user;
@CreatedDate
@Column(updatable = false)
private LocalDateTime createdAt;
@LastModifiedDate
private LocalDateTime updatedAt;
}
Java
볡μ¬
μ£Όμ νΉμ§
μ΄λ
Έν
μ΄μ
| μ€λͺ
|
@Entity | μν°ν° ν΄λμ€λ‘ μ§μ |
@Table(name="ν
μ΄λΈλͺ
") | λ°μ΄ν°λ² μ΄μ€ ν
μ΄λΈκ³Ό 맀ν |
@Id, @GeneratedValue
(strategy = GenerationType.IDENTITY) | PKμ μλ μ¦κ° μ€μ |
@Column
(nullable = false, unique = true, length = 50) | μ»¬λΌ μμ± μ§μ |
@Enumerated(EnumType.STRING) | μ΄κ±°ν κ° μ μ₯ |
@CreatedDate, @LastModifiedDate | μμ± λ° μμ μκ° μλ μ μ₯ |
@ManyToOne, @OneToMany | κ΄κ³ μ€μ λ° λ§€ν |