2010-03-30 28 views
2

在此示例中,Google App Engine documentation使AccountInfo實體的實體組父項成爲Customer實體。 AccountInfo封裝Customer而不是其他方式?通常我會想到AccountInfo課程包括關於Customer的所有信息。在此示例中,Customer或AccountInfo是否應該是實體組的父級?

import javax.jdo.annotations.IdGeneratorStrategy; 
import javax.jdo.annotations.PersistenceCapable; 
import javax.jdo.annotations.Persistent; 
import javax.jdo.annotations.PrimaryKey; 
import com.google.appengine.api.datastore.Key; 
import com.google.appengine.api.datastore.KeyFactory; 

@PersistenceCapable 
public class AccountInfo { 
    @PrimaryKey 
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) 
    private Key key; 

    public void setKey(Key key) { 
     this.key = key; 
    } 
} 

// ... 
     KeyFactory.Builder keyBuilder = new KeyFactory 
     .Builder(Customer.class.getSimpleName(), "custid985135"); 

     keyBuilder.addChild(AccountInfo.class.getSimpleName(), "acctidX142516"); 

     Key key = keyBuilder.getKey(); 

     AccountInfo acct = new AccountInfo(); 
     acct.setKey(key); 
     pm.makePersistent(acct); 

回答

2

在現實生活中,客戶可以擁有多個帳戶,例如當前帳戶和儲蓄帳戶。作爲組織而不是個人的客戶可能有多個賬戶用於各種不同目的。

因此,擁有一個可以擁有一個或多個AccountInfo實體的Customer實體是非常合理的。

+0

正是。客戶可以擁有人員賬戶(顯然「客戶」實際上應該是「實體」 - 就像在商業,法律或個人實體中一樣),並附有客戶/供應商/員工角色,因爲您的客戶可能同時也是您的供應商。 ',除非您在accountinfo中編碼角色 - 但是「實體」也需要擁有多個帳戶。 – TomTom 2010-03-30 04:38:32

0

客戶屬於帳戶 - 而不是相反。賬戶是您的主要實體。該帳戶將有各種負責任的各方,具體取決於帳戶的用途。銀行賬戶將有一個或多個「可靠方」和一個或多個簽署人,可能還有一個或多個賬戶收款人。 「客戶」是一個抽象的概念,只在特定的環境中才有用 - 儘管市場部門可能會保留一份郵寄客戶清單。

如果我這樣做,那麼我會定義我的工作範圍,就好像'客戶'ID /名稱是從I.E以外的地方提供的。他們是一個給定的。

NB認爲你有一個銀行賬戶?你沒有。銀行擁有賬戶。他們設置並允許您使用它。從你的「真實世界」中,你可能會認爲你記入了「你的」帳戶。在真實的「真實世界」中,銀行實際上是在爲您提供訪問權限的賬戶(只要它決定)。您剛剛「記入」您的賬戶的款項被銀行列爲責任,因爲他們現在欠你錢。

'在現實世界'是一個虛假的陳詞濫調,那些發現業務分析太辛苦。 現在生產這些產品的時間比以往任何時候都要長,這部分是因爲人們圍繞着一個共同的世界觀定義了商業概念。唯一不會被這些真正Worlders搞砸的是會計系統,因爲有特定的規則來管理它們。術語表 - 嘗試定義客戶!詭計呃?

相關問題