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