最近正在做JDO 2.0與Hibernate的方案選擇。JDO實現(xiàn)選的是Jpox,個別問題也參看了Bea Kodo 4.1。但是今天發(fā)現(xiàn)JDO2.0在一項關鍵功能上無法滿足要求,有可能被直接叫停。
這個功能就是動態(tài)O/R Mapping。就是說,在系統(tǒng)運行時,動態(tài)生成一份新的O/R Mapping,或者往原來的O/R Mapping中添加字段。并且這些改動,應當無須重啟Application Server就能生效。
Hibernate雖然也沒有很好的支持這一點,但是提供了可實現(xiàn)的渠道。
1. 重建SessionFactory時可以添加新的Mapping文件。
2. Dynamic Component可以在pojo中將動態(tài)字段表達為Map,這樣只用修改Mapping文件,不用修改java類。
3. Hibernate 3.2.1還提供不用java類的Mapping方式。在Mapping文件中,只指定entity-name,不指定class,Hiberante就會使用Map來表達它。
Jpox沒有提供上面三種渠道中的任何一種。我已經(jīng)在Jpox forum上發(fā)貼問了,不知道什么時候能有答復。
Kodo的文檔中也沒有直接提到,本想去bea發(fā)貼的,但是網(wǎng)速太慢。