我讀過sometutorials約EMF我仍然想知道爲什麼我應該使用它。我爲什麼要使用EMF?
到現在爲止,我從XSD架構+ JXC或手動生成POJO。
就我所瞭解的EMF而言,定義類之間的一些複雜關係(一對多等)會很有用。但是,這一切?用EMF生成代碼不是更復雜嗎?它不是增加了一些額外的依賴嗎?
我讀過sometutorials約EMF我仍然想知道爲什麼我應該使用它。我爲什麼要使用EMF?
到現在爲止,我從XSD架構+ JXC或手動生成POJO。
就我所瞭解的EMF而言,定義類之間的一些複雜關係(一對多等)會很有用。但是,這一切?用EMF生成代碼不是更復雜嗎?它不是增加了一些額外的依賴嗎?
如果你唯一的興趣是POJO的產生,那麼我同意有許多選擇可以實現與EMF一樣的功能。
但是,Java代是EMF的第一個應用程序。現在有大量基於EMF的Eclipse插件可以免費提供很多功能來操作(查詢,驗證,轉換......)您的EMF模型。
請參閱Eclipse Modeling Project以獲取EMF官方Eclipse項目的列表。
此外,請看Acceleo以查看EMF模型(適用於Java,PHP,...)的基於模板的生成方法的靈活性。
添加到Jordi說的EMF提供的通知機制與XML Beans不同,例如,允許您將監聽器添加到模型更改。因此,當模型發生變化時,您會收到有關此更改的通知。
我已經成功地使用EMF查詢搜索使用類似SQL的語法的模型,並使用OCL。 EMF驗證是一個很好的框架,用於基於模式中定義的內容來驗證模型,並且在模式中無法表示自己的驗證邏輯。
一般而言,可以說使用emf在運行時提供了幾個好處。
在第一個階段,您會注意到ecore類(和emf運行時)爲您的應用程序中的POJO提供了您可能需要的內容。在很多領域沒有進一步的編碼需要,而在使用普通POJO時需要手工編碼:
擴展到EMF甚至提供更:
你可以實際上認爲EMF/Ecore爲POJO提供了一個標準,整個生態系統都圍繞它進行了擴展,實際上它提供了您將用傳統方法手工編寫的代碼。
說實話,EMF的缺點是,如果您編寫基於Eclipse的胖客戶端,但您可能會成爲一個問題,如果您在服務器上,那麼您將被綁定到Ecore運行時非常好。
應該指出的是,EMF可以單獨使用,即使在純粹的基於OSGi的應用程序中沒有在Equinox中運行。你只需要3個包:org.eclipse.emf.ecore,org.eclipse.emf.ecore.xmi和org.eclipse.emf.common – 2014-11-12 14:22:01