В этом примере, правильно ли Customer или AccountInfo будет родительским объектом группы сущностей? - PullRequest
2 голосов
/ 30 марта 2010

В этом примере документация Google App Engine делает Customer родительским объектом группы AccountInfo.Не будет ли AccountInfo инкапсулировать Customer, а не наоборот?Обычно я думаю, что класс AccountInfo включает всю информацию о Customer.

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 ]

2 голосов
/ 30 марта 2010

В реальной жизни Клиент может иметь более одной Учетной записи, например, текущую и сберегательную. Клиенты, которые являются организациями, а не частными лицами, могут иметь несколько учетных записей для различных целей.

Следовательно, имеет смысл иметь одну сущность Customer, которая может владеть одной или несколькими сущностями AccountInfo.

0 голосов
/ 29 мая 2010

Клиенты принадлежат Аккаунтам, а не наоборот. Учетная запись является вашим основным лицом. Учетная запись будет иметь множество ответственных сторон в зависимости от того, для чего предназначена учетная запись. На банковском счете будет один или несколько «Ответственных лиц» и один или несколько Получателей и, возможно, один или несколько Получателей выписки по счету. «Клиент» - это абстрактное понятие, которое имеет отношение только к данному контексту, хотя отделы маркетинга могут хранить список клиентов для рассылки.

Если бы я делал это, я бы определил свой объем работы так, как если бы идентификаторы / имена клиентов были предоставлены за пределами области I.E. они данны.

NB. Думаете, у вас есть банковский счет? Вы не Банку принадлежит счет. Они настроили его и дали вам разрешение на его использование. Из вашего «реального мира» вы можете считать, что вы зачислили «свой» аккаунт. В РЕАЛЬНОМ «реальном мире» банк фактически дебетует счет, к которому он предоставляет вам доступ (до тех пор, пока он это решит). Деньги, которые вы только что «зачислили» на свой счет, перечислены банком как обязательство, поскольку теперь они должны вам деньги.

«В реальном мире» - фальшивая фраза, используемая теми, кому слишком тяжело анализировать бизнес. Проектам сейчас требуется больше времени для производства товаров, чем когда-либо прежде - отчасти из-за людей, определяющих бизнес-концепции вокруг общего взгляда на мир. Единственная вещь, которая не облажается этими настоящими мирянами, - это системы бухгалтерского учета, поскольку существуют конкретные правила, которые управляют ими. Словарь терминов - попробуйте определить клиента! Хитрый а?

...