当前位置:首页 > 科技  > 软件

基于JPA如何处理数据表公共字段?

来源: 责编: 时间:2024-06-20 08:55:26 226观看
导读在软件开发中,我们经常需要跟踪实体的历史记录,例如创建时间、修改时间等。Spring Data JPA 提供了一种名为 Auditing 的功能,可以自动处理这些操作。本文将介绍如何在 Spring Boot 项目中使用 Spring JPA Auditing。实

在软件开发中,我们经常需要跟踪实体的历史记录,例如创建时间、修改时间等。Spring Data JPA 提供了一种名为 Auditing 的功能,可以自动处理这些操作。本文将介绍如何在 Spring Boot 项目中使用 Spring JPA Auditing。da328资讯网——每日最新资讯28at.com

实现方式

在实体类上添加注解;da328资讯网——每日最新资讯28at.com

  1. 定义通用实体,比如Domain类,我们会将通用字段在这里定义
@MappedSuperclass@Datapublic class Domain implements Serializable {    @CreatedBy    @Column(name = "creator", length = 56)    private String creator;    @CreatedDate    @Column(name = "create_time", length = 12)    private Date createTime;    @LastModifiedBy    @Column(name = "modifier", length = 56)    private String modifier;    @LastModifiedDate    @Column(name = "modified_time", length = 12)    private Date modifiedTime;}
  1. 添加Auditing相关注解;
// ...@EntityListeners(AuditingEntityListener.class)public class Domain implements Serializable {    // ...}
  1. 添加自动填充属性实现,主要通过实现AuditorAware接口,并将实现注入到spring容器;
public class DomainAuditorAware implements AuditorAware<String> {    @Override    public Optional<String> getCurrentAuditor() {        return Optional.of("我是操作人");    }}
  1. 定义spring自动配置;
@Configurationpublic class JpaAuditingConfiguration {    @Bean    public DomainAuditorAware domainAuditorAware(){        return new DomainAuditorAware();    }}

在resource目录添加自动注入配置META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports,这样通过引入jar就可以自动使用该配置。da328资讯网——每日最新资讯28at.com

cn.cycad.jpa.auditing.config.JpaAuditingConfiguration

应用示例

  1. 比如现在有一个User实体,我们通过继承基类;
@Entity@Table(name = "t_user")@Datapublic class User extends Domain {    @Id    private String id;    private String caption;}
  1. 定义用户对应的Repository;
public interface UserRepository extends JpaRepository<User,String> {    }
  1. 用户的创建与修改基于UserRepository来实现;
@RestController@RequestMapping("/user")public class UserController {    @Resource    private UserRepository userRepository;        @PostMapping    public User saveUser(@RequestBody User user){        return userRepository.save(user);    }}
  1. 服务;
@EnableJpaAuditing@EntityScan({"cn.cycad.jpa.auditing.sample.entity"})@EnableJpaRepositories(basePackages="cn.cycad.jpa.auditing.sample.repository")@SpringBootApplicationpublic class SampleApplication{    public static void main(String[] args) {        SpringApplication.run(SampleApplication.class, args);    }}

通过注解@EnableJpaAuditing启用。da328资讯网——每日最新资讯28at.com

  1. 编写测试用例;
### 新增用户POST http://localhost:8080/userContent-Type: application/json{  "id": "1",  "caption": "tom"}

这样每次调用用户新增请求时,默认会将DomainAuditorAware的返回值填充到@CreatedBy与@LastModifiedBy修饰的字段上去。da328资讯网——每日最新资讯28at.com

实现原理

可以看到,实现该效果狐妖有以下几个关键点:da328资讯网——每日最新资讯28at.com

  1. 实体需要添加@EntityListeners(AuditingEntityListener.class),并且需要再对应字段上标识出需要注入的操作人、操作时间等。
  2. 需要编写自己的实现AuditorAware<String>,这里只用关注创建人,时间没必要处理,当然也可以通过实现接口DateTimeProvider来扩展。
  3. 需要基于JpaRepository接口实现用户的新增或修改。
  4. 需要@EnableJpaAuditing开启。

本文链接:http://www.28at.com/showinfo-26-95001-0.html基于JPA如何处理数据表公共字段?

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: Runway 王者归来发布 Gen-3 Google 快手万兴科技等纷纷聚焦 AI 视频生成赛道

下一篇: IDC报告:AR/VR头显出货量骤降67.4%,但MR/ER头显呈现新机遇

标签:
  • 热门焦点
  • K60 Pro官方停产 第三方瞬间涨价

    虽然没有官方宣布,但Redmi的一些高管也已经透露了,Redmi K60 Pro已经停产且不会补货,这一切都是为了即将到来的K60 Ultra铺路,属于厂家的正常操作。但有意思的是该机在停产之后
  • 7月安卓手机性价比榜:努比亚+红魔两款新机入榜

    7月登场的新机有努比亚Z50S Pro和红魔8S Pro,除了三星之外目前唯二的两款搭载超频版骁龙8Gen2处理器的产品,而且努比亚和红魔也一贯有着不错的性价比,所以在本次的性价比榜单
  • K6:面向开发人员的现代负载测试工具

    K6 是一个开源负载测试工具,可以轻松编写、运行和分析性能测试。它建立在 Go 和 JavaScript 之上,它被设计为功能强大、可扩展且易于使用。k6 可用于测试各种应用程序,包括 Web
  • 三言两语说透设计模式的艺术-单例模式

    写在前面单例模式是一种常用的软件设计模式,它所创建的对象只有一个实例,且该实例易于被外界访问。单例对象由于只有一个实例,所以它可以方便地被系统中的其他对象共享,从而减少
  • Temu起诉SHEIN,跨境电商战事升级

    来源 | 伯虎财经(bohuFN)作者 | 陈平安日前据外媒报道,拼多多旗下跨境电商平台Temu正对竞争对手SHEIN提起新诉讼,诉状称Shein&ldquo;利用市场支配力量强迫服装厂商与之签订独家
  • ESG的面子与里子

    来源 | 光子星球撰文 | 吴坤谚编辑 | 吴先之三伏大幕拉起,各地高温预警不绝,但处于厄尔尼诺大&ldquo;烤&rdquo;之下的除了众生,还有各大企业发布的ESG报告。ESG是&ldquo;环境保
  • 苹果、三星、惠普等暂停向印度出口笔记本和平板电脑

    集微网消息,据彭博社报道,在8月3日印度突然禁止在没有许可证的情况下向印度进口电脑/平板及显示器等产品后,苹果、三星电子和惠普等大公司暂停向印度
  • OPPO K11搭载长寿版100W超级闪充:26分钟充满100%

    据此前官方宣布,OPPO将于7月25日也就是今天下午14:30举办新品发布会,届时全新的OPPO K11将正式与大家见面,将主打旗舰影像,和同档位竞品相比,其最大的卖
  • 亲历马斯克血洗Twitter,硅谷的苦日子在后头

    文/刘哲铭  编辑/李薇  马斯克再次挥下裁员大刀。  美国时间11月14日,Twitter约4400名外包员工遭解雇,此次被解雇的员工的主要工作为内容审核等。此前,T
Top