SpringDataJPA存储数据时通过注解自动设置创建时间和修改时间

  发布日期:   2018-01-24
  最新修改:   2020-05-28
  阅读次数:   588 次

  • 如果我们此时是通过 Spring Data JPA进行数据库的操作,Spring Data JAP提供了Auditing特性,我们可以通过起很好的实现我们的需求。

  • 其原因基本时通过插入监听器,当我们对被特定注解的数据bean进行操作时,其在中间自动进行一系列的操作,想到个词,补刀~~

  • 我们看下官方的说明:

  • Spring Data provides sophisticated support to transparently keep track of who created or changed an entity and the point in time this happened. To benefit from that functionality you have to equip your entity classes with auditing metadata that can be defined either using annotations or by implementing an interface.

  • 大意如下:Spring Data 提供了复杂的支持来用透明的,无感知的方式去跟踪实体是被谁创建的以及发生此时间的时间点。

  • 基于注解的auditing元数据

  • @CreatedBy,

  • @LastModifiedBy :捕获实体是被谁创建的或者修改

  • @CreatedDate :捕获创建的时间

  • @LastModifiedDate :捕获修改的时间

  • 使用时,我们的数据bean需要添加@EntityListeners(AuditingEntityListener.class) 注解,一边增加auditing的能力,当然,我们的配置应用类还要添加@EnableJpaAuditing 注解去开启auditing特性。

  • 例如:

  •   @Entity
      @EntityListeners(AuditingEntityListener.class)
              class Customer {
    
                  @CreatedBy
                  private User user;
    
                  @CreatedDate
                  private DateTime createdDate;
    
                  // … further properties omitted
              }
    
      @SpringBootApplication
      @EnableJpaAuditing
      public class AircraftApplication {
    
          public static void main(String[] args) {
              SpringApplication.run(AircraftApplication.class, args);
          }
          @Bean
          public CommandLineRunner commandLineRunner(ApplicationContext ctx) {
              return args -> {
    
                  System.out.println("Let's inspect the beans provided by Spring Boot:");
    
                  String[] beanNames = ctx.getBeanDefinitionNames();
                  Arrays.sort(beanNames);
                  for (String beanName : beanNames) {
                      System.out.println(beanName);
                  }
    
              };
          }
      }

   转载规则

《SpringDataJPA存储数据时通过注解自动设置创建时间和修改时间字》GajAngels 采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。