连接池介绍:
连接池就是用于存储连接的一个容器,这个容器其实就是一个集合对象,该集合必须是线程安全的,不能两个线程同时拿到同一个连接;该集合还必须实现队列的特性,先进先出
mybatis连接池介绍
mybatis连接池提供了3中配置的方式:
配置的位置:
位于主配置文件的SqlMapConfig.xml中的dataSource标签,type属性就是表示采用何种连接池
type属性的取值:
- POOLED:采用的是javax.sql.DataSource规范中的连接池,mybatis中有针对规范的实现方式
- UNPOOLED:采用传统的获取连接的方式,虽然也实现了javax.sql.DataSource接口,但是并没有实现池的思想
- JNDI:它是采用服务器提供的JNDI技术实现,来获取DataSource对象,不同的服务器所能拿到的DataSource是不一样的
注意:如果不是web或者maven的war工程,是不能使用的;我们使用的服务器是tomcat服务器,采用的连接池就是dbcp连接池
pooled最后将connection返回给了连接池,unpooled关闭连接后就结束了
代码分析
jndi就是模拟的windows的注册表
web工程使用jndi
SqlMapConfig.xml
META-INF下的context.xml
然后启动tomcat就能使用jndi数据源了,但是我们需要注意,test单元测试不经过服务器,所以无法使用jndi,我们可以在jsp中使用代码块的方式进行测试,因为jsp经过服务器,jsp在执行时会先转换成.java然后编译为.class,再去运行。单元测试运行时只是单纯的java程序,不经过数据源