hibernate - шаблон для отображения объекта по умолчанию? - PullRequest
1 голос
/ 30 декабря 2008

Есть ли удобный способ отобразить объект базы данных по умолчанию в Hibernate?

Например, в этом классе Foo всегда должен иметь возможность возвращать Bar, независимо от того, определен ли он для Foo по умолчанию или из значения по умолчанию, которое хранится где-то в базе данных. Пользователи Foo должны иметь возможность устанавливать в нем пользовательский объект Bar, но им не нужен доступ для записи в Bar - следовательно, снижается видимость. :

public Class Foo {
    public Bar Bar {
        get {
            return CustomBar ?? DefaultBar;
        }
    }

    public Bar CustomBar { get; set; }
    protected Bar DefaultBar { get; private set; }
}

Что меня интересует, так это как спящий режим сопоставить это свойство DefaultFoo. Все классы Bar должны иметь возможность добраться до этого единственного объекта DefaultFoo. Единственный способ, которым я знаю, как это сделать в Hibernate, - это сопоставление «один ко многим» в Foo. (Foo содержит от одного до нескольких баров) ... это кажется немного грязным, так как всегда есть не более одного бара. Есть ли лучший образец для этого типа поведения? ТИА.

1 Ответ

0 голосов
/ 30 декабря 2008

Это также называется шаблоном NullObject или DefaultObject. В списках рассылки Hibernate об этом говорилось. Но я ничего не видел о том, как вы на самом деле храните это в базе данных. Если вам нужен настоящий NullObject, внешний от базы данных, вы можете реализовать объект Singleton по умолчанию, реализовать интерфейс ILifecycle (я думаю) и наложить вето на событие OnSave, чтобы предотвратить его сохранение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...