mybatic

Mybatis和Hibernate的區別

Mybatis并不是一個完全的orm框架。Hibernate是面向對象,可以不使用sql語句。Mybatis是面向sql語句的。專注的是輸入映射返回值映射以及sql語句的靈活性。

傳統:dao,daoimpl


impl:

SqlSession sqlSession = sessionFactory.openSession();? ? ??

? User user = sqlSession.selectOne("test.getUserById", id);??

? ? ?sqlSession.close();

return user;

存在問題:dao中操作數據庫的代碼重復。可以考慮使用模板替代。statementId存在硬編碼的問題。

另一種是mapper代理方法,程序員只需要寫mapper接口相當于dao接口

。查詢性能,hibernate需要對性能進行優化,需要一個高手。Mybatis只需要對sql優化即可。

Hibernate具有自己的日志統計。Mybatis本身不帶日志統計,使用Log4j進行日志記錄。

mybatic ? ?

session緩存,可以增強變現而且處理循環 依賴也是必須的。要開啟二級緩存,你需要在你的SQL映射文件中添加一行:?

MyBatis可以進行更為細致的SQL優化,可以減少查詢字段。

MyBatis容易掌握,而Hibernate門檻較高。

相同:

Hibernate與MyBatis都可以是通過SessionFactoryBuider由XML配置文件生成SessionFactory,然后由SessionFactory生成Session,最后由Session來開啟執行事務和SQL語句。其中SessionFactoryBuider,SessionFactory,Session的生命周期都是差不多的。

Hibernate和MyBatis都支持JDBC和JTA事務處理。

Hibernate優勢

Hibernate的DAO層開發比MyBatis簡單,Mybatis需要維護SQL和結果映射。

Hibernate對對象的維護和緩存要比MyBatis好,對增刪改查的對象的維護要方便。

Hibernate數據庫移植性很好,MyBatis的數據庫移植性不好,不同的數據庫需要寫不同SQL。

Hibernate有更好的二級緩存機制,可以使用第三方緩存。MyBatis本身提供的緩存機制不佳。


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容