SqlSessionFactory这个类是用来干嘛的? 50

 我来答
醜徳拖網速
推荐于2017-11-26 · TA获得超过449个赞
知道小有建树答主
回答量:317
采纳率:0%
帮助的人:157万
展开全部
SqlSessionFactory是一个sql会话工厂,在这个工厂里面取得一个session会话丢给客户端使用。可以理解为,session是由SqlSessionFactory制造的,需要session的时候直接去工厂里面拿一个,用完了还回来。
更多追问追答
追问

还是不懂,我想请你看看这三个API的作用,
tutu天然呆
高粉答主

2018-03-31 · 说的都是干货,快来关注
知道大有可为答主
回答量:239
采纳率:100%
帮助的人:9万
展开全部

一、回答:

1、这个类可以被实例化、使用和丢弃,一旦创建了 SqlSessionFactory,就不再需要它了。

2、因此 SqlSessionFactoryBuilder 实例的最佳范围是方法范围(也就是局部方法变量)。

3、你可以重用 SqlSessionFactoryBuilder 来创建多个 SqlSessionFactory 实例,但是最好还是不要让其一直存在以保证所有的 XML 解析资源开放给更重要的事情。

二、拓展:

1、SqlSessionFactory 一旦被创建就应该在应用的运行期间一直存在,没有任何理由对它进行清除或重建。

2、使用 SqlSessionFactory 的最佳实践是在应用运行期间不要重复创建多次,多次重建 SqlSessionFactory 被视为一种代码“坏味道(bad smell)”。

3、因此  SqlSessionFactory 的最佳范围是应用范围。有很多方法可以做到,最简单的就是使用单例模式或者静态单例模式。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
家中春色美人间7
2018-01-30
知道答主
回答量:1
采纳率:0%
帮助的人:955
展开全部

上面的答法太表面了,我来解释下,SqlSessionFactory与SqlSession都是一个接口,你的问题是SqlSessionFactory是干什么的,我深层次的跟你说下吧:

  1. SqlSessionFactory是通过SqlSessionFactoryBuilder的build方法创建的

  2. 而build方法创建的是一个SqlSessionFactory的实现类,叫DefaultSqlSessionFactory

  3. 然后这个实现类主要用的设计模式是建造者(build)模式,而里面最终要达到的一个目的是为了创建出DefaultSqlSession,这个是SqlSession的实现类.

  4. 前面说了SqlSession也是一个接口,那么SqlSession=SqlSessionFactory.openSession()就相当于SqlSession=DefaultSqlSession这个实现类.

  5. 那么这个实现类是干什么的呢?这个实现类可以进行增删查改以及事务操作等.

  6. 那么DefaultSqlSession是怎么进行这些操作的呢?答:通过调用Executor执行器.

  7. 所以,咱们平时见到的SqlSession.select()等等其实是在操作DefaultSqlSession.select()的方法,而DefaultSqlSession的方法其实也不是就能够实现对数据库进行操作的,而是通过调用Executor执行器来执行

  8. 而Executor执行器其实也是一个接口,而在解析配置文件的时候已经解析出来SQL,那么根据一路传过来的SQL以及参数等信息,Executor再调度StatementHandler等对象对数据库进行增删查改操作.

    总结:现在你应该明白了吧,其实我们看到的都是表面,你认为的SqlSession能进行数据库操作其实不是的,是它的实现类再调用底层的Executor,底层的Executor再调度相关数据库操作对象才搞定的,而再要深入它的相关对象,那么就深似海了........

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式