Nhibernate hibernate-映射默认实体的模式?
在Hibernate中映射默认数据库对象是否有一种简洁的方法 例如,在这个类中,一个Foo应该始终能够返回一个Bar,无论它是为Foo自定义的,还是来自存储在数据库某处的默认值。Foo的用户应该能够在其中设置自定义的Bar对象,但他们不需要对Bar的写访问权限-因此降低了可见性:Nhibernate hibernate-映射默认实体的模式?,nhibernate,hibernate,Nhibernate,Hibernate,在Hibernate中映射默认数据库对象是否有一种简洁的方法 例如,在这个类中,一个Foo应该始终能够返回一个Bar,无论它是为Foo自定义的,还是来自存储在数据库某处的默认值。Foo的用户应该能够在其中设置自定义的Bar对象,但他们不需要对Bar的写访问权限-因此降低了可见性: public Class Foo { public Bar Bar { get { return CustomBar ?? DefaultBar; }
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包含一到多个酒吧)…这似乎有点麻烦,因为总是最多有一个酒吧。这种行为有更好的模式吗?TIA.这也称为NullObject或DefaultObject模式。关于这一点,Hibernate邮件列表上有一些讨论。但我没有看到任何关于如何将其存储在数据库中的信息。如果您想要一个真正的NullObject,它位于数据库外部,那么您可以实现一个Singleton默认对象,实现ILifecycle接口(我认为),并否决OnSave事件以防止它被持久化