公司最近使用的ORM框架是JPA實現產品使用的是hibernate,曾經看過一篇博客上面說的是如果團隊裡面沒有一個精通hibernate的人,那麼最好不要使用它,我現在是深刻的體會到了。但是使用什麼框架不是我能決定的,如果是我的話,我寧願使用mybatis。吐槽完來講講出現的問題,因為我們項目是一個 ...
公司最近使用的ORM框架是JPA實現產品使用的是hibernate,曾經看過一篇博客上面說的是如果團隊裡面沒有一個精通hibernate的人,那麼最好不要使用它,我現在是深刻的體會到了。但是使用什麼框架不是我能決定的,如果是我的話,我寧願使用mybatis。吐槽完來講講出現的問題,因為我們項目是一個電商的項目模塊比較多,所以各種表關聯。
用了一段時間以後,我們發現非常的慢,打開一個頁面要20多秒==!,後臺一直列印sql,我們在實體上面註解的LAZY看似並沒有起什麼作用。各種調試各種百度但是一直找不到原因。
後面今天實現受不了了。我靜下來仔細分析了一下,各種調試以後,我突然意識到,我們的項目和一起拿的項目不一樣的地方在於現在這個項目全部是使用rest風格的。而以往只要使用了懶載入那麼頁面上使用到了,才會查詢,因為是使用到了jsp模板,是動態的編譯的,說白一點就是其實jsp就是JAVA代碼。但是我們的不一樣,我們的將資源全部進行序列化操作,然後通過json將數據給傳輸到客戶端,那麼在序列化的時候,就會將所有的實體給進行序列化。大概知道原因了以後,我的做法就是在返回的時候,動態的指定哪一些實體不需要序列化,對於那種互相關聯的也忽略一邊。再進行一遍操作的時候,果然不會那麼慢了,最多一秒就出來了。我覺得這個坑還是必須註意一下的,不過我覺得還是沒有一個精通hibernate的人的原因。
這個就當自己的一個總結吧,我覺得,對於技術選型一定要考慮具體情況,並不是好別人覺得好用就選什麼。最後說一句,團隊沒有hibernate大神,還是少用,會被坑的要死要死的。