我試圖自己學習,但很快就開始意識到,無盡的書的結尾,我會知道所有@Entity等低級別的東西,而不理解頂級。持久性設計一般問題
所以我的理解是:
- 我們通常聲明DAO接口我們定義所有的域模型執行的方法。其次,我們編寫Domain Model來表示數據庫中的實體。
- 我們編寫DAO實現類,它可以使用Hibernate,JPA,JDBC或我們在那裏創建的和實現我們的DAO接口的任何奇蹟。
(同春共連接最多)
我的問題,指的是分以上:
我們每寫域模型單一DAO接口?如果我們有涉及多個領域模型的交叉行爲,我們會聲明新的DAO接口實現並相應地調用它?例如:「庫存的客戶訂單,庫存檢查項目是否可用 - >確認是否」該去哪裏?
Hibernate如何與MVC交互?有什麼重要的方面需要注意?
在本書中,我注意到:
重寫equals和hashCode
「在簡單的場景,Hibernate是可以不需要任何特殊更改域對象本身維護實體等價但是,如果。您的應用程序要求您將實體添加到Java集合(例如java.util.Set),或者您計劃使用分離的實體,則可能需要爲您的域對象重寫默認的equals()和hashCode()方法「
也許我不太瞭解它,什麼是分離的實體?那些是我們從Hibernate上下文中取出來的 - 有效的只是類的集合?
我想要的是安全地做Hibernate的工作,然後返回給我一個模型,我將給予Servlet,並將它委託給適當的View。我們通過DAOimpl類方法的簡單返回來提取該模型,還是有點棘手?
如果我要做沒有ORM框架的持久層,只要用普通的JDBC,我的問題是什麼?我聽說Hibernate有一些處理併發請求的智能會話,那麼JDBC會發生什麼?
業務邏輯位於何處?它是DAOimpl類嗎?
對不起,如果我的一些問題是不幸的,我很欣賞任何批評和糾正。
謝謝。
非常感謝您,我可以使用此對象將它作爲模型傳遞給視圖嗎?它只是一個實例嗎? Cat fritz =(Cat)sess.load(Cat.class,generatedId); – Aubergine
@aubergine我不明白 – hvgotcodes
:-)我只是問具體問題如何從Hibernate Session中檢索實體到一個簡單的類實例。 Cat fritz =(Cat)sess.load(Cat.class,generatedId);貓弗裏茨不是持久的,可以用於服務和作爲一個模型嗎?對不起:-) – Aubergine