簡體   English   中英

Java JPA / Hibernate反模式

[英]Java JPA/Hibernate anti-pattern

我使用JPA / Hibernate已有幾年了,它們真的很有用。 但是我在設計上有一些哲學上的問題。

主要的問題是為什么我應該將我所有的類屬性都公開(創建公共的setter / getter),只是因為Hibernate希望訪問它們,即使它無需經過許可(通過反射)也可以訪問它們,在這種設計中,getter和setter應該是這樣這種方法很容易減少開銷,然后在實踐中實際上放開了控制字段訪問的哲學。即,在此設計中,getter和setter在需要不同設計標准的Database Access(JPA)和System Domain之間共享。 (從數據庫加載它時,可能不需要在將其設置為字段之前檢查值,因為您之前已經做過此檢查!)

任何機構都可以解釋這種設計的任何原因嗎? 我知道這在某些情況下很有用,但在大多數情況下卻沒有幫助。

還有一個問題是,當從數據庫中加載對象時,setter幾乎是無用的,因為對象是部分加載的,並且沒有順序(因此,這幾乎迫使我們實現setter如此簡單,只是從輸入到歸檔的復制)!

如果設置程序僅由Hibernate使用,則可以將它們設為私有。 休眠文檔中

Hibernate可以直接訪問公共,私有和受保護的訪問器方法,以及公共,私有和受保護的字段。 選擇取決於您,您可以將其匹配以適合您的應用程序設計。

無參數構造函數是所有持久化類的要求; Hibernate必須使用Java Reflection為您創建對象。 構造函數可以是私有的,但是在不使用字節碼檢測的情況下,運行時代理生成和高效數據檢索需要包或公共可見性。

暫無
暫無

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

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