* 部门名
*
* 冗余字段
*/
@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、&