微服务配置中心 Apollo解析——Portal 创建 App,这操作真香

* 部门名

*

* 冗余字段

*/

@Column(name = “OrgName”, nullable = false)

private String orgName;

/**

* 拥有人名

*

* 例如在 Portal 系统中,使用系统的管理员账号,即 UserPO.username 字段

*/

@Column(name = “OwnerName”, nullable = false)

private String ownerName;

/**

* 拥有人邮箱

*

* 冗余字段

*/

@Column(name = “OwnerEmail”, nullable = false)

private String ownerEmail;

}

  • ORM 选用 Hibernate 框架。

  • @SQLDelete(…) + @Where(…) 注解,配合 BaseEntity.extends 字段,实现 App 的逻辑删除

  • 字段比较简单,胖友看下注释。

2.1 BaseEntity

com.ctrip.framework.apollo.common.entity.BaseEntity ,基础实体抽象类。代码如下:

@MappedSuperclass

@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)

public abstract class BaseEntity {

/**

* 编号

*/

@Id

@GeneratedValue

@Column(name = “Id”)

private long id;

/**

* 是否删除

*/

@Column(name = “IsDeleted”, columnDefinition = “Bit default ‘0’”)

protected boolean isDeleted = false;

/**

* 数据创建人

*

* 例如在 Portal 系统中,使用系统的管理员账号,即 UserPO.username 字段

*/

@Column(name = “DataChange_CreatedBy”, nullable = false)

private String dataChangeCreatedBy;

/**

* 数据创建时间

*/

@Column(name = “DataChange_CreatedTime”, nullable = false)

private Date dataChangeCreatedTime;

/**

* 数据最后更新人

*

* 例如在 Portal 系统中,使用系统的管理员账号,即 UserPO.username 字段

*/

@Column(name = “DataChange_LastModifiedBy”)

private String dataChangeLastModifiedBy;

/**

* 数据最后更新时间

*/

@Column(name = “DataChange_LastTime”)

private Date dataChangeLastModifiedTime;

/**

* 保存前置方法

*/

@PrePersist

protected void prePersist() {

if (this.dataChangeCreatedTime == null) dataChangeCreatedTime = new Date();

if (this.dataChangeLastModifiedTime == null) dataChangeLastModifiedTime = new Date();

}

/**

* 更新前置方法

*/

@PreUpdate

protected void preUpdate() {

this.dataChangeLastModifiedTime = new Date();

}

/**

* 删除前置方法

*/

@PreRemove

protected void preRemove() {

this.dataChangeLastModifiedTime = new Date();

}

// … 省略 setting / getting 方法

}

  • @MappedSuperclass 注解,见 《Hibernate 中 @MappedSuperclass 注解的使用说明》 文章。

  • @Inheritance(…) 注解,见 《Hibernate(11)映射继承关系二之每个类对应一张表(@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)》 文章。

  • id 字段,编号,Long 型,全局自增。

  • isDeleted 字段,是否删除,用于逻辑删除的功能。

  • dataChangeCreatedBy 和 dataChangeCreatedTime 字段,实现数据的创建人和时间的记录,方便追踪。

  • dataChangeLastModifiedBy 和 dataChangeLastModifiedTime 字段,实现数据的更新人和时间的记录,方便追踪。

  • @PrePersist、@PreUpdate、&

你可能感兴趣的:(程序员,面试,java,后端)