mybatis框架核心SqlSessionFactoryBuilder、SqlSessionFactory......及其生命週期
阿新 • • 發佈:2018-12-14
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();
時就會銷燬
以上純屬個人理解,理解不當的地方,歡迎各位博友指正