从零开始系列——Mybatis会话工厂
会话工厂类
目的:如果每一次的CRUD操作都需要读取Mybatis的核心配置文件,这样就会造成资源的浪费。可以将打开数据库连接的方法编写成一个工具类,在Dao中就可以直接调用。
设计思路:如果每一次都需要创建一个工厂类对象,也会造成资源的浪费。解决的办法就是将把这个工厂类设计成单例模式
单例模式:保证一个类只有一个实例,并且可以全局访问
单例模式必备的三个条件:
步骤1.私有化静态类对象,类加载的那一刻,就进行实例化
private static DaoFactory daoFactory = new DaoFactory();
步骤2.私有化构造方法,确保该类不会被外部进行实例化操作。在里面初始化Mybatis的配置
private DaoFactory(){ SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder(); try { sqlSessionFactory = sqlSessionFactoryBuilder.build(Resources.getResourceAsReader("DataConfig.xml")); } catch (IOException e) { e.printStackTrace(); } }
步骤3.创建一个公共静态方法,用于获得类对象。
public static DaoFactory getInstence(){ return daoFactory; }
getInstence()用于获得SqlSession对象,Mybatis支持手动提交事务,这里设置成false
public SqlSession getSession(){ return sqlSessionFactory.openSession(false); }