diff --git a/road/src/main/java/com/example/road/BaseTimeEntity.java b/road/src/main/java/com/example/road/BaseTimeEntity.java new file mode 100644 index 00000000..daf2df74 --- /dev/null +++ b/road/src/main/java/com/example/road/BaseTimeEntity.java @@ -0,0 +1,24 @@ +package com.example.road; + +import lombok.Getter; +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +import javax.persistence.Column; +import javax.persistence.EntityListeners; +import javax.persistence.MappedSuperclass; +import java.time.LocalDateTime; + +@Getter +@MappedSuperclass +@EntityListeners(AuditingEntityListener.class) +public abstract class BaseTimeEntity { + + @CreatedDate + @Column(updatable = false) + private LocalDateTime createdDate; + + @LastModifiedDate + private LocalDateTime modifiedDate; +} diff --git a/road/src/main/java/com/example/road/RoadApplication.java b/road/src/main/java/com/example/road/RoadApplication.java index 0af5c345..6726f587 100644 --- a/road/src/main/java/com/example/road/RoadApplication.java +++ b/road/src/main/java/com/example/road/RoadApplication.java @@ -2,7 +2,9 @@ package com.example.road; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.data.jpa.repository.config.EnableJpaAuditing; +@EnableJpaAuditing @SpringBootApplication public class RoadApplication { diff --git a/road/src/main/java/com/example/road/pharmacy/entity/Pharmacy.java b/road/src/main/java/com/example/road/pharmacy/entity/Pharmacy.java index d471d852..01da223e 100644 --- a/road/src/main/java/com/example/road/pharmacy/entity/Pharmacy.java +++ b/road/src/main/java/com/example/road/pharmacy/entity/Pharmacy.java @@ -1,5 +1,6 @@ package com.example.road.pharmacy.entity; +import com.example.road.BaseTimeEntity; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; @@ -15,7 +16,7 @@ import javax.persistence.Id; @Builder @AllArgsConstructor @NoArgsConstructor -public class Pharmacy { +public class Pharmacy extends BaseTimeEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) diff --git a/road/src/test/groovy/com/example/road/pharmacy/repository/PharmacyRepositoryTest.groovy b/road/src/test/groovy/com/example/road/pharmacy/repository/PharmacyRepositoryTest.groovy index cc1dfb4f..1480a272 100644 --- a/road/src/test/groovy/com/example/road/pharmacy/repository/PharmacyRepositoryTest.groovy +++ b/road/src/test/groovy/com/example/road/pharmacy/repository/PharmacyRepositoryTest.groovy @@ -4,6 +4,8 @@ import com.example.road.AbstractIntegrationContainerBaseTest import com.example.road.pharmacy.entity.Pharmacy import org.springframework.beans.factory.annotation.Autowired +import java.time.LocalDateTime + class PharmacyRepositoryTest extends AbstractIntegrationContainerBaseTest { @Autowired @@ -59,4 +61,25 @@ class PharmacyRepositoryTest extends AbstractIntegrationContainerBaseTest { result.size() == 1 } + def "BaseTimeEntity 등록"() { + given: + LocalDateTime now = LocalDateTime.now(); + String address = "서울 특별시 성북구 종암동"; + String name = "은혜 약국"; + + def pharmacy = Pharmacy.builder() + .pharmacyAddress(address) + .pharmacyName(name) + .build(); + + when: + pharmacyRepository.save(pharmacy); + def result = pharmacyRepository.findAll(); + + then: + result.get(0).getCreatedDate().isAfter(now); + result.get(0).getModifiedDate().isAfter(now); + + } + }