@Entity
λ°μ΄ν°λ² μ΄μ€μ μ μ₯(persist)ν μλ° κ°μ²΄λ₯Ό μ μ
β’
λ€μν μ λ
Έν
μ΄μ
μ μ΄μ©ν΄ λ³΄λ€ μμΈν ν
μ΄λΈ μ€ν€λ§ μ 보λ₯Ό νν
β’
μ λ
Έν
μ΄μ
μΌλ‘ ννν μ€ν€λ§ μ 보μ μ€μ ν
μ΄λΈ μ€ν€λ§κ° μλ²½ν μΌμΉν΄μΌ ν νμλ μμ
β’
νλμ λλ©μΈ(domain)μΌλ‘ κ°μ£Ό
@Entity: JPA μ λ Έν μ΄μ
@Entity ν΄λμ€ μμμ μ¬μ©λλ μ£Όμ JPA μ λ
Έν
μ΄μ
β’
@Table, @Index, @UniqueConstraint: ν
μ΄λΈ κΈ°λ³Έ μ 보μ μΈλ±μ€, unique ν€λ₯Ό μ€μ
@Table(indexes = {
@Index(columnList = "placeId"),
@Index(columnList = "eventName")
})
Java
볡μ¬
β’
@Id, @GeneratedValue: primary key μ€μ
β’
@Column: κ° μ»¬λΌ μ€μ
β’
@Enumerated: enumμ μ²λ¦¬νλ λ°©λ²μ μ€μ
@Enumerated(EnumType.STRING)
private EventStatus eventStatus;
Java
볡μ¬
β’
@Transient: νΉμ νλλ₯Ό DB μμ λμμμ μ μΈ
β’
@OneToOne, @OneToMany, @ManyToOne, @ManyToMany: μ°κ΄ κ΄κ³ μ€μ
β’
@MapperdSuperClass: μμμ μ΄μ©ν κ³΅ν΅ νλ μ μ
β’
@Embedded, @Embeddable: ν΄λμ€ λ©€λ²λ₯Ό μ΄μ©ν κ³΅ν΅ νλ μ μ
β’
@DateTimeFormat: μ€νλ§μμ μ 곡νλ μ λ
Έν
μ΄μ
, λ μ§ μ
λ ₯μ ν¬λ§·μ μ§μ (μλ μ€νλ§ μ λ
Έν
μ΄μ
μ)
@Entity: JPA μν°ν°μ lifecycle eventλ₯Ό νμ©ν Auditing ν ν¬λ
JPA μν°ν°μ μμ±μΌμ, μμ μΌμ κ°μ΄ μΌμ νκ² μμ±νλ λ©νλ°μ΄ν°λ₯Ό μ²λ¦¬ κ°λ₯
β’
@PrePersist
β’
@PostPersist
β’
@PreRemove
β’
@PostRemove
β’
@PreUpdate
β’
@PostUpdate
β’
@PostLoad
@Entity: Spring JPA Auditing μ λ Έν μ΄μ
μν°ν°μ μμ±μΌμ, μμ μΌμ, μμ±μ, μμ μμ μλμΌλ‘ κ΄λ¦¬ν΄μ£Όλ μ λ
Έν
μ΄μ
β’
μ€μ
β¦
@EnableJpaAuditing (μ무 configuration νμΌμ λΆμ¬μ£Όλ©΄ λ¨)
β¦
@EntityListeners(AuditingEntityListener.class) (Entity ν΄λμ€μ λΆμ¬μ£Όλ©΄ λ¨)
β’
νμ©
β¦
@CreatedBy
β¦
@CreatedDate
β¦
@LastModifiedBy
β¦
@LastModifiedDate