feat: Auditing 및 Persist 설정이 담긴 BaseEntity 추가

This commit is contained in:
이상진 2025-08-02 15:52:44 +09:00
parent d2e2c9c888
commit 769576a8d5
2 changed files with 37 additions and 0 deletions

View File

@ -3,7 +3,9 @@ package roomescape
import org.springframework.boot.Banner import org.springframework.boot.Banner
import org.springframework.boot.SpringApplication import org.springframework.boot.SpringApplication
import org.springframework.boot.autoconfigure.SpringBootApplication import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.data.jpa.repository.config.EnableJpaAuditing
@EnableJpaAuditing
@SpringBootApplication @SpringBootApplication
class RoomescapeApplication class RoomescapeApplication

View File

@ -0,0 +1,35 @@
package roomescape.common.entity
import jakarta.persistence.*
import org.springframework.data.annotation.CreatedDate
import org.springframework.data.annotation.LastModifiedDate
import org.springframework.data.domain.Persistable
import org.springframework.data.jpa.domain.support.AuditingEntityListener
import java.time.LocalDateTime
import kotlin.jvm.Transient
@MappedSuperclass
@EntityListeners(AuditingEntityListener::class)
abstract class BaseEntity(
@Column(updatable = false)
@CreatedDate
var createdAt: LocalDateTime? = null,
@LastModifiedDate
var lastModifiedAt: LocalDateTime? = null,
) : Persistable<Long> {
@Transient
private var isNewEntity: Boolean = true
@PostLoad
@PostPersist
fun markNotNew() {
isNewEntity = false
}
override fun isNew(): Boolean = isNewEntity
abstract override fun getId(): Long?
}