关于java:Mybatis中重要组件的生命周期

37次阅读

共计 1297 个字符,预计需要花费 4 分钟才能阅读完成。

Mybatis 中重要组件的生命周期

在之前的章节中咱们讲了 Mybatis 一些次要组件的根本用法和配置形式, 然而把握这些次要组件的生命周期也是十分重要的, 不能只是单单理解根本的应用办法。这对于 MyBatis 应⽤的正确性和高性能是极其重要的,咱们必须把握他们

本单次要内容:

以下各组件的生命周期了解:

  • SqlSessionFactoryBuilder
  • SqlSessionFactory
  • SqlSession
  • Mapper

SqlSessionFactoryBuilder

SqlSessionFactoryBuilder 是利用 XML 或者 Java 编码取得资源来构建 SqlSessionFactory
的,通过它能够构建多个 SessionFactory。它的作⽤用就是一个构建器 一旦咱们构建了 SqlSessionFactory 它的作用就⼰经完结,失去了存在的意义,这时咱们就应该毫不犹豫的废除它,将它回收。

所以它的⽣命周期只存在于⽅法的部分,它的作用就是⽣成 SqlSessionFactory 对象

SqlSessionFactory

SqlSessionFactory 的作用是创立 SqlSession,而 SqlSession 就是一个会话,相当于 JDBC
中的 Connection 对象。每次应用程序须要拜访数据库,咱们就要通过 SqlSessionFactory 创
建 SqlSession,所以 SqlSessionFactory 应该在 MyBatis 利用的整个⽣命周期中。而如果咱们
屡次创立同一个数据库的 SqlSessionFactory,则每次创立 SqlSessionFactory 会关上更更多的数
据库连贯(Connection)资源,那么连贯资源就很快会被耗尽(这就很重大!)

因而 SqlSessionLFactory 的责任是惟一的,它的责任就是创立 SqlSession,所以咱们果决采纳单例模式。如果咱们采纳多例,那么它对数据库连贯的耗费是很大的,不利于咱们统⼀的治理, 所以正确的做法应该是使得每⼀个数据库只对应一个 SqlSessionFactory,治理好
数据库资源的调配,防止过多的 Connection 被占用, 导致数据库连贯被占满.

SqlSession

SqlSession 是⼀个会话,相当于 JDBC 的一个 Connection 对象,它的⽣命周期应该是
在申请数据库处理事务的过程中

它是一个线程不平安的对象,在波及多线程的时候咱们
须要特地的当心,操作数据库须要留神其隔离级别,数据库锁等⾼级个性。此外,每次创
建的 SqlSession 都必须及时敞开它,它长期存在就会使数据库连接池的流动资源缩小,对
零碎性能的影响很大。正如 Mybatis 源码浏览 (一) 中的代码⼀样,咱们往往通过 finally 语句块保障咱们正确
的敞开了 SqlSession

Mapper

Mapper 是个接⼝,⽽没有任何实现类,它的作⽤是发送 SQL,而后返回咱们须要的后果 因而它的生命周期应该在⼀个 SqlSession 事务⽅法之内,它的最大范畴和 SqlSession 是雷同的

总结

有了下面的叙述后, 咱们曾经分明了 Mybatis 各组件的生命周期和分割:

关注公众号:java 宝典

正文完
 0