Objectify - 我应该创建一个实体 super class 吗?
Objectify - should I create an entity super class?
有什么理由不让我的所有实体都成为一个通用 ModelEntity 对象的子类?
@Entity
public class ModelEntity {
@Id Long id;
}
@Subclass
public class User extends ModelEntity {
@Index
String username;
}
优点很明显:所有实体都有通用代码(如 id、date、getKey)
你能想到缺点吗?
好吧,jpa 抽象的一大优点是在持久层和业务逻辑之间进行隔离。如果您为所有实体使用隐藏 ID,您就放弃了。
例如,您的实现可以有一个值对象,这样您实际上隐藏了实体的@Id 部分。您可以为 "real" 个实体使用完全不同的 @Id。
拥有一个公共基础 class 可能会有所帮助,但您几乎肯定不想使其成为多态实体层次结构的一部分。不要为此目的使用 @Subclass
;你不需要它:
public class ModelEntity {
@Id Long id;
}
@Entity
public class User extends ModelEntity {
@Index
String username;
}
有什么理由不让我的所有实体都成为一个通用 ModelEntity 对象的子类?
@Entity
public class ModelEntity {
@Id Long id;
}
@Subclass
public class User extends ModelEntity {
@Index
String username;
}
优点很明显:所有实体都有通用代码(如 id、date、getKey) 你能想到缺点吗?
好吧,jpa 抽象的一大优点是在持久层和业务逻辑之间进行隔离。如果您为所有实体使用隐藏 ID,您就放弃了。
例如,您的实现可以有一个值对象,这样您实际上隐藏了实体的@Id 部分。您可以为 "real" 个实体使用完全不同的 @Id。
拥有一个公共基础 class 可能会有所帮助,但您几乎肯定不想使其成为多态实体层次结构的一部分。不要为此目的使用 @Subclass
;你不需要它:
public class ModelEntity {
@Id Long id;
}
@Entity
public class User extends ModelEntity {
@Index
String username;
}