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