关于业务实体中,公共字段处理的疑问?

2019-10-23 18:10:14 +08:00
 wym7223645

公共属性类

public class BaseEntity implements Serializable {
	private static final long serialVersionUID = -6287610802797091825L;
    /** 可用状态 */
    private String usableStatus;
    /** 创建日期时间 */
    private Date createDate;
    /** 创建用户 */
    private String createUserId;
    /** 创建 IP */
    private String createIp;
    /** 修改日期时间 */
    private Date modifyDate;
    /** 修改用户 */
    private String modifyUserId;
    //  其余公共字段
}

方式 1:将公共类,作为 test 的子属性引入

public class test implements Serializable {
	// 编号
	private String code; 
	// 名字
	private String name;
	// 引入公共属性
	BaseEntity baseEntity;
}

方式 2:将公共属性类作为父类,让 test 继承

public class test extends BaseEntity implements Serializable {
	// 编号
	private String code; 
	// 名字
	private String name;
}

实际项目中所有的表会有一部分公共属性,例如创建时间、修改时间、可用状态等。 我们新的项目被要求按照如上方式 1的方式进行处理,说是因为现在主流都是这样做的

我个人比较偏向方式 2,因为方式 1如果要更改usableStatus需要 test.getBaseEntity().setUsableStatus("1")才能改,并且使用 JPA 查询的时候需要更深的层次才行

有如下几个问题请教各位大佬

1.这两种方式在使用过程中的利弊分别是什么?

2.大家都使用哪种方式,是否真的主流都是方式 1

本人菜鸟,各位大佬请喷~~~

2555 次点击
所在节点    Java
2 条回复
killua67
2019-10-24 08:50:51 +08:00
2 表操作方便
x66
2019-10-24 18:08:16 +08:00
我们用 2

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/612211

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX