hibernate层次设计(2)
昨天我们了解了怎么使用hibernate来进行层次设计,今天我们再来了解另外一种方法实现层次设计,这就是通过在表内置入标志来实现。在hibernate的映射文件中我们通过descriminator标签来进行实现。
废话不多说,我们直接看例子:
我们把昨天的TItem的映射文件修改为:
?看到中间,我们加入了一个discriminator标签,它表明我们以下的两个subclass通过哪个字段来进行区别。
?我们看到这两段,它指明了当discriminator所指定的field的值为1时,表明它是TBook类,并且pageCount有值;当discriminator所指定的field值为2时,表明它是TDVD类,并且regionCode有值。
这样我们就只需要用到一个表,就表明了它们几个类的关系了,注意,这种方式对有过多子类的情况下,并不好,它会使主表的字段过多,会造成一定的设计上的不便。如果有过多的子类,还是建议各个子类对应各自的表,保留它们的单独字段,如http://cxshun.iteye.com/blog/1054004的第二种方法。