SqlSessionFactory
该类主要作用是用来获取SqlSession对象的。其实例一旦被创建,在整个应用程序执行期间都会存在。在构建其实例时,建议使用单例模式,一个数据库对应一个SqlSessionFactory实例。
SqlSession
其主要作用是执行持久化操作。SqlSession对象是线程不安全的,每一个线程都应该有自己的SqlSession实例,不能共享。因此其使用范围最好在一个请求或一个方法中,不要将其放在一个类的静态字段、实例字段或者任何类型的管理范围。
另外SqlSession对象有很多数据库操作的方法,具体可查看这个网址Mybatis的java API,http://www.mybatis.org/mybatis-3/zh/java-api.html#sqlSessions
下面是关于获取SqlSession实例的工具类的代码:
package com.itheima.utils;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.Reader;
public class MybatisUtils {
private static SqlSessionFactory sqlSessionFactory = null;
static {
try {
Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSession getSession() {
return sqlSessionFactory.openSession();
}
}