MyBatis生命周期和作用域

参考文章:
https://www.cnblogs.com/yulinfeng/p/6002379.html

https://www.cnblogs.com/limn/p/9022663.html

https://www.cnblogs.com/jeffen/p/6262760.html

SqlSessionFactoryBuilder只用于创建SqlSessionFactory,存在于一个局部方法内部,创建完SqlSessionFactory就可以让他死亡了,不要让他持久保存,这很浪费资源。虽然他可以重复创建SqlSessionFactory,但创建一个是最好的,创建多个是浪费并且无用,一般它都是单例的。
SQLSessionFactory是一个数据库连接池,作用是创建SQLSession接口对象。它的生命周期是整个应用,作用域也是整个应用。
SQLSession是一个数据库连接对象(Connection对象),具备对数据库的一次连接访问,一次可执行多条语句。执行完之后就要销毁,生命周期是一次数据库连接。
Mapper是SQLSession创建的,他可以执行sql语句,但是必须依赖数据库的连接才能执行,因此它的生命周期是一次sql语句的执行。

总结

作用域&生命周期:

SqlSessionFactoryBuilder-->创建SqlSessionFactory的一个局部方法内,局部方法的死亡。
SQLSessionFactory-->整个应用内,整个应用的存活时间
SQLSession-->一次数据库的连接,连接结束死亡
Mapper-->一个sql语句的执行,执行完死亡。

猜你喜欢

转载自www.cnblogs.com/macht/p/11831364.html