根據新的資訊,我正在改寫我的問題,保留原文以供參考:
當切換到 Hibernate 6 時,我需要包含新包。我不明白為什么需要這些包,所以我需要進一步的資訊他們做了什么。在 Google 或 Stack Overflow 上進行搜索大多以“只需添加包”結尾。
問題(請參閱下面的答案):
- 為什么在 Hibernate 6 中需要 hibernate-validator 而在 Hibernate 5 中不需要?
- 為什么需要 hibernate-core-jakarta 而不是 hibernate-core?
- 為什么需要 jakarta.el-api?
原文:
我正在使用 JPA 指定的功能,并使用 Hibernate 作為實作。因此,我包括了 jakarta.persistence-api 和 jakarta.validation-api,以及所需的 Hibernate 包。
直到 5.6.10 版本,包括 hibernate-core-jakarta 似乎是正確的做法。使用該軟體包,一切都是開箱即用的。
我現在已經切換到 Hibernate 6.1.2。在這里,hibernate-core-jakarta 不再存在。因此,我現在包括hibernate-core。根據我收到的錯誤訊息,我還添加了 hibernate-validator 7.0.5.Final 和 jakarta.el-api 5.0.1。
現在,事情似乎奏效了。不過,我想知道:為什么 hibernate-core-jakarta 被洗掉了?我找到的解決方案是正確的,還是現在有隱藏的問題?
編輯:根據我閱讀的更多內容,我可能可以更好地表達令我困惑的內容:
- 據我所知,Hibernate 最初是一個獨立于 JPA 的庫。然后它被改編為實作 JPA 標準。(如果我錯了,請糾正我。)
- 我認為使用 hibernate-core-jakarta 包相當于“使用 JPA 兼容性”,而 hibernate-core 相當于“僅使用 Hibernate”。
- 現在我認為 hibernate-core-jakarta 的意思可能是“使用 Jakarta 的 JPA”,而 hibernate-core 的意思是“使用 Java EE 的舊 JPA”(javax)。
- 這當然意味著現在不再支持 Java EE,因此 hibernate-core 繼承了 hibernate-core-jakarta 的功能!?
- 但是,如果這是真的,為什么我在升級到新版本時開始需要額外的庫?
uj5u.com熱心網友回復:
您可以查看/除錯org.hibernate.cfg.beanvalidation.BeanValidationIntegrator
以了解為什么為您的應用程式激活了 bean 驗證,因此需要一個可用的實作。通常,僅當 API 在類路徑上可用時才需要實作,因此如果您不想使用jakarta.validation
,只需確保它不是您的依賴項的一部分。
jakarta.el-api
然后是 的傳遞要求jakarta.validation
,因此您的問題的根源似乎是您以某種方式依賴于驗證 api。
uj5u.com熱心網友回復:
為什么需要 hibernate-core-jakarta 而不是 hibernate-core?
Hibernate 5 仍然使用來自 Java EE ( javax.*
) 的 Java Persistence API 撰寫。已經有一個替代方案在使用 Jakarta Persistence API ( jakarta.*
)。我使用了這個替代方案,因為我已經使用過 Jakarta。
Hibernate 6 將 Jakarta 設為默認值,因此新的 hibernate-core 是 hibernate-core-jakarta 的直接繼承者,舊的 hibernate-core 已停產。
為什么在 Hibernate 6 中需要 hibernate-validator 而在 Hibernate 5 中不需要?
我仍然不確定為什么它只從 Hibernate 6 開始,但是 hibernate-validator 的要求源于 jakarta.validation 的包含。我正在做標記@NotNull
,這就是最初導致它的原因。
為什么需要 jakarta.el-api?
我一直在以雜亂無章的方式在單元測驗和不斷增長的應用程式之間切換。在單元測驗中使用 Hibernate 時需要 jakarta.el-api。因此,有時我需要它,有時我不需要。而且,這還不夠。您還需要 API 的實作。選擇正確的實作取決于您的專案。這是一個很好的概述。
顯然,您也可以禁用這部分代碼。但是,答案仍然依賴于 javax 版本,我無法重現它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/504804.html