簡體   English   中英

JPA / Hibernate:如果沒有正確使用所有JPA映射,那么ORM(休眠)有什么用?

[英]JPA/Hibernate: What use is an ORM (Hibernate) when it doesn't get all JPA mappings right?

在過去的幾個月/幾周中,我在Hibernate和JPA映射方面做了大量工作。 我的數據庫使用復合主鍵,並且我已經報告了大約10到15個Hibernate和5-10個EclipseLink錯誤。 休眠在某些應該工作的星座中尤其荒謬。 (我的代碼已由專家和JPA圖書作者檢查過)

最大的問題是:

如果沒有正確地獲得所有 JPA映射,那么ORM有什么用?

Hibernate提供了太多的東西,例如緩存等等。 我想知道誰會在乎開發人員什至無法擺脫創建有效的元數據模型的麻煩……這一切都沒有意義。 再說一次,如果沒有正確地獲得所有 JPA映射,那么ORM有什么用?

ORM是一個工具。 深深地思考那句話。

通常認為,如果一項技術(在這種情況下為Hibernate)在特定領域中變得足夠流行,那將是萬靈葯,您必須使用它,否則您將是失敗者。

這是完全錯誤的。 Hibernate是應適當使用的工具。

Hibernate的作者說,Hibernate最適合新項目,在XML或使用注釋定義映射的新項目中,然后Hibernate為您的數據庫生成DLL並創建所有表和關系。

反向操作可能非常棘手,尤其是當您具有非規范化表和復合主鍵時。

因此,Hibernate強烈建議使用自動遞增的主代理鍵。

對於許多極端情況,在野外等待您進行正確的JPA反向映射是一個挑戰,因此您通過報告所有這些錯誤來進行正確的操作,以便對其進行修復。 有了更多的持久性,我相信您將能夠完美地進行映射,然后在那之后的一切都將變得容易得多,因為第一部分總是最難的。

無論JPA有什么問題,我都會為所有實現創建一個測試用例,並比較ORM的行為及其社區的反應。 到目前為止,Hibernate的情況最糟-甚至沒有查看他們的JPA錯誤。 OpenJPA有點落后於EclipseLink功能,但看起來很穩定。 EclipseLink的錯誤仍然需要一些時間,但是會有活動和頻繁的升級。 Oracle人員以專業的方式回答了郵件列表中的所有問題。 看來目前EclipseLink是贏家。 我使用復合主鍵沒有問題-沒有它們,我仍然需要輔助唯一索引。 能夠通過組合鍵查找實體非常有用,因此代理鍵替代方法似乎是我的借口。 在EclipseLink中,甚至可以將枚舉用作主鍵,這對於控制系統行為的眾多小查找表確實非常有用。 參見http://opensource.atlassian.com/projects/hibernate/browse/JPA-7

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM