1. 程式人生 > >mybatis框架核心SqlSessionFactoryBuilder、SqlSessionFactory......及其生命週期

mybatis框架核心SqlSessionFactoryBuilder、SqlSessionFactory......及其生命週期

1.SqlSessionFactoryBuilder

作用:唯一作用建立SqlSessionFactoryBuilder例項

SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
//引數是mybatis配置檔案路徑
         InputStream inputStream = Resources.getResourceAsStream("mybatis/mybatis.xml");
         SqlSessionFactory factory = builder.build(inputStream); 

生命週期:當SqlSessionFactory建立完成後就銷燬,且不能使用SqlSessionFactoryBuilder建立兩次SqlSessionFactory例項。即

SqlSessionFactory factory1 = builder.build(inputStream); 
//有異常,因為使用SqlSessionFactoryBuilder建立了兩次SqlSessionFactory 例項
SqlSessionFactory factory2 = builder.build(inputStream); 

2.SqlSessionFactory

作用:用於建立SqlSession,同一個SqlSessionFactory可以建立多個SqlSession,在實際開發中建議把SqlSessionFactory以單例模式存在 生命週期:因為一個SqlSessionFactory可以建立多個SqlSession,所以其生命週期是存在於整個MyBatis程式下的

3.SqlSession

作用:用於建立Mapper物件,且每一次建立都是一個新的Mapper物件

TeacherMapper teacherMapper1 = session.getMapper(TeacherMapper.class);
TeacherMapper teacherMapper2 = session.getMapper(TeacherMapper.class);
//teacherMapper1 和 teacherMapper2是兩個不同的物件

生命週期:每訪問一次資料庫就要建立一次SqlSession物件,當我們使用

SqlSession session = DBUtil.getSqlSessionFactory().openSession();

時就會建立一次SqlSession物件 當我們使用

  session.close();

時就會銷燬

以上純屬個人理解,理解不當的地方,歡迎各位博友指正