持久層能夠將業務數據存儲到磁盤,具有長期存儲能力,只要磁盤不損壞(大部分的重要數據都會有相關的備份機制),在斷電或者其餘狀況下,從新開啓系統仍然能夠讀取這些數據。通常執行持久任務的都是數據庫系統。持久層可使用巨大的磁盤空間,也比較廉價,它的肯定就是比較慢。java
緣由:sql
1. 不屏蔽SQL ,意味着能夠更精確地定位sql語句,能夠對其進行優化和改造,這有利於互聯網系統性能的提升,符合互聯網須要性能優化的特色。數據庫
2. 提供強大、靈活的映射機制,方便java開發者使用。提供動態的sql的功能,容許咱們根據不一樣條件組裝sql,這個功能遠比其餘工具或java編碼的可讀性和可維護性高的多,知足各類應用系統的同時也知足了需求常常變化的互聯網應用的要求。編程
3. 在mybatis中,提供使用了Mapper接口編程,只要一個接口和一個XML就能建立映射器,進一步簡化咱們的工做,使得不少框架API在mybatis中消失,開發者更集中於業務邏輯。緩存
在 Mybatis 中有兩個實現類,DefaultSqlSession 和 SqlSessionManager。性能優化
DefaultSqlSession是單線程使用的session
SqlSessionManager是多線程使用的。mybatis
做用:多線程
SqlSession的做用相似於一個JDBC中的 Connection對象,表明着一個鏈接資源的啓用。app
一、建立 SqlSession
SqlSession sqlsession=SqlSessionFactory.openSession();
1
二、SqlSession控制數據庫事務
//定義SqlSession
SqlSession sqlsession=null;
try{
//打開SqlSession會話
sqlsession=SqlSessionFactory.openSession();
//some code ...
sqlsession.commit();//提交事務
}catch(Exception e){
sqlsession.rollback();
}finally{
//在finally語句中確保資源被順利關閉
if(SqlSession!=null)
sqlsession.close();
}
其有一個接口和對應的 xml 文件( 或註解 )組成。
它能夠配置以下內容:
映射器的主要做用就是將 sql 查詢到的結果映射爲一個 POJO,或者將 POJO的數據插入到數據庫中,並定義一些關於緩存等重要內容
定義一個角色POJO
public class Role{
private Long id;
private String roleName;
private String note;
/*setter and getter*/
}
歡迎你們留言關注~轉發支持一波~