我想做一個安全的登錄,防止SQLInjection使用OWASP specification for hashing但我的應用程序的其他部分我正在考慮使用JPA,但我不知道是否使用混合模式是一個很好的做法,或者我應該堅持使用所有數據層的DAO並保持一致?Web應用程序:DAO和JPA的數據層
我也想知道在運行時是否同時使用JPA和DAO會導致兼容性問題?
感謝
我想做一個安全的登錄,防止SQLInjection使用OWASP specification for hashing但我的應用程序的其他部分我正在考慮使用JPA,但我不知道是否使用混合模式是一個很好的做法,或者我應該堅持使用所有數據層的DAO並保持一致?Web應用程序:DAO和JPA的數據層
我也想知道在運行時是否同時使用JPA和DAO會導致兼容性問題?
感謝
這是關於在使用JPA時是否有意義使用DAO層的討論的答案。
How should EntityManager be used in a nicely decoupled service layer and data access layer?
我認爲同樣aplies任何數據訪問邏輯(例如,登錄)
最好的辦法是,你可以使用DAO安全登錄散列你可以用JPA.in我的項目,我使用Hibernate的,而不是JPA應用程序的purpose.Rest。
好的,這不會導致任何兼容性問題? –
你的DAO應該是基於接口的,這意味着實施是可以隨意修改的選擇通過插入一個新的實現。客戶應該只知道DAO界面。
如果這是正確的,那麼我不明白你的問題。你的DAO是界面; JPA將成爲您在衆多選擇中的一個實施。它不是/或;它是接口/實現。
那麼,你做了一件我已經清楚,更清楚的事情,因爲我打算使用接口來公開服務,但我認爲DAO是實現而不是模式。 –
錯 - 它是界面。 – duffymo
所以我應該只使用DAO進行身份驗證,其餘的使用JPA,因爲使用自定義查詢要容易得多。 –
正如在上面的帖子中提到的,如果你的數據訪問邏輯只涉及調用EntityManager的crud方法,我認爲不包括DAO,在這種情況下,它只是EntityManager的包裝而不添加任何值。 –
好吧,我現在明白了,你說得對,我只應該堅持JPA。感謝澄清。 –