//
Search
πŸ›΅

@Entity

@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