簡體   English   中英

Objectify-我應該創建一個實體超類嗎?

[英]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),您能想到缺點嗎?

擁有通用的基類可能會有所幫助,但是您幾乎可以肯定不想使其成為多態實體層次結構的一部分。 不要為此使用@Subclass 您不需要它:

public class ModelEntity {
    @Id Long id;
}

@Entity
public class User extends ModelEntity {
    @Index
    String username;
}

嗯,jpa抽象的一大優點是在持久層和業務邏輯之間保持隔離。 如果您對所有實體都使用隱藏ID,那么您將放棄這一點。

例如,您可以在實現中包含一個value對象,以便實際上隱藏實體的@Id部分。 您可以對“真實”實體使用完全不同的@Id。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM