2017-08-03 47 views
0

如果這個問題過於開放或模糊,請對不起。我的意圖是在這裏得到你的觀點,而不是一個正確/錯誤的答案。我將設計一個基於Java的報告應用程序,它主要使我的最終用戶能夠通過選擇不同表格/視圖中存在的各種屬性來生成即席報告,過濾它們,聚合它們,將它們分組等等。我一直在從事與我的一組同事在此討論是否使用ORM進行數據訪問和數據庫抽象。我明白ORM的主要目的是完全開始讓開發人員用對象的方式來思考,而不是物理結構(表格,列等)。我個人覺得,使用ORM特別適用於即席報表並不會有太大用處,純粹是因爲動態性和在運行時關聯多個表的靈活性,以及​​在運行中按功能分組應用各種聚合。我當然不認爲使用ORM然後構建一大堆本地SQL是一個好主意,因爲它會使ORM失效。思考?Java | ORM |休眠|對於報告申請的想法

+0

與任何ORM(如hibernate,JPA等)相比,JDBC/native SQL報告速度更快。請參閱此處的區別 - https://stackoverflow.com/questions/1575762/orm-technologies-vs-jdbc –

+0

本地查詢來到這裏的圖片?是的,如果你只需要寫本地查詢,那麼使用Hibernate就沒有多大意義。 –

回答

0

通常這樣的報告會連接來自多個來源(實體)的數據以及添加複雜的過濾和/或聚合。

基於SQL的方法更靈活,性能更好。

您仍然可以將ORM映射到現有實體的SQL,但從我的經驗來看,單獨的DTO比純粹的實體要多得多(我會說90%的報告列是不同的)。有時候更多的列有時會少些列,使用不同的表等。

因此,它可能是純SQL並使用JDBCTemplate進行映射。或者,您可以爲查詢添加MyBatis。

ORM很好地涵蓋了CRUD(以及最簡單的R getById和getAll)的CUD。複雜R(讀取)應該使用ORM完成。

只是我2美分。