我們有許多對象具有Long類型的ID,並存儲在MySql中,並使用JPA/Hibernate for ORM。我們將來會把一些東西搬到Mongo。爲Id字段創建可嵌入的類是明智的,例如ContentId並在整個系統中使用它來代替Long,這樣當我們移動到MongoDB或沒有Long ID的anoSql數據庫時,我們只需更改ContentId類的內部表示。我只能找到對複合鍵使用@EmbeddedId的引用。這是明智的做法嗎?當我們改變並用ObjectId替換Long時,我不希望在一年左右時間內通過所有的代碼。嵌入ID是從jpa移動到mongo的正確方式
0
A
回答
0
MongoDB使用生成的OID作爲默認Id。你也可以使用_id屬性定義你自己的。 OID基本上是一個UUID,它最好映射到一個String。我只是在MySQL中使用一個UUID,所以你可以使用相同的模型。 MongoDB不支持複合ID,所以使用複合ID可能不是一個好主意。
EclipseLink支持MySQL和MongoDB上的JPA。 EclipseLink還支持可與任何數據庫配合使用的@UuidGenerator。
http://java-persistence-performance.blogspot.com/2012/04/eclipselink-jpa-supports-mongodb.html
http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Advanced_JPA_Development/NoSQL
0
我看不出有什麼EmbeddedId會給你獲得可移植性....最好是專注於提供的價值發電機和哪些數據存儲會支持,並尋求如何您可以在兩個數據存儲上都有可映射的東西來緩解遷移。無論是本地MongoDB UUID(JPA說法中的「身份」),基於字符串的(uuid,uuid-hex)還是使用基於字符串的(uuid,uuid-hex),都可以使用全部的身份標識。數字(「表格」)。這提供了便攜性,您可以選擇最適合您的模型的設備。它也支持其他類型的數據存儲(RDBMS,Excel,ODF,ODBMS,HBase,AppEngine,LDAP等)的持久性,如果您還需要其他數據存儲的便攜性。
相關問題
- 1. JPA/Hibernate的嵌入式ID
- 2. 什麼是將EJB放入JPA項目的「正確」方式?
- 3. 嵌入HTML到PHP的正確方法
- 4. 將Mongo嵌入式文檔轉移到自己的收藏
- 5. 這是使用嵌入式可可豆莢創建動態/嵌入式框架的正確方法嗎?
- 6. JPA正確的方法從數據庫
- 7. 嵌入式hadoop-pig:UDF使用自動addContainingJar的正確方法是什麼?
- 8. 從移動客戶端執行oAuth的「正確」方式
- 9. 將Crystal正確嵌入到PDF中正確嵌入TT字體
- 10. 移動到另一個.SKS文件的正確方式
- 11. JPA和JSF:正確的注入方式EntityManager
- 12. 在Heroku上從SQLite3移動到Mongo?
- 13. Mongo Express無法正確顯示嵌入的文檔
- 14. MongoDB建模嵌入式文檔正確的方式
- 15. 在mongo中創建嵌套對象的正確方法
- 16. JPA庫查找嵌入的ID不能正常工作
- 17. Doctrine + Mongo:如何定義映射到mongo中嵌入文檔的id?
- 18. JPA嵌入式集合
- 19. 正確的方式來實現子ID?
- 20. 正確的方式從crypto.randomBytes
- 21. 將Google日曆嵌入網站的方式正確(HTML5即爲)
- 22. 正確的方式嵌入json有效載荷base64與網絡
- 23. 嵌入聲音無負載延遲的正確方式
- 24. 在嵌入模式下設置Neo4j APOC的正確方法
- 25. 移動JavaFx8節點的正確方法
- 26. 如何正確嵌入的JavaScript到WordPress
- 27. 從IP3.9導入到IP4.1的URL格式是否正確?
- 28. 什麼是正確的方式來傳遞值從PHP到r
- 29. Mongo db從參考文件id中找到文件嵌入了多個文件?
- 30. 嵌入式svg沒有正確縮放