@RequestController—数据源与连接池



一、@RequestController————类

  • 继承自@Controller
  • 向页面发送JSON格式信息
  • 相当于@Controller+@ResponseBody————在页面显示数据
    在这里插入图片描述

@Controller————类

  • 跳转到页面
    在这里插入图片描述

@ResponseBody————类/方法

  • 返回json数据
  • 用于异步获取数据——在页面显示数据
    在这里插入图片描述

@RequestMapping————方法(必需!!)

    • 访问路径:/h1

二、数据源与连接池

JNDI

  • 概念:Java Naming and Directory Interface————JAVA命名和目录接口
  • 作用:为JAVA应用程序提供命名和目录访问服务的API接口。
  • 详解:将Java对象以某个名称的形式binding绑定到一个容器环境Context中,以后调用容器环境的lookup查找方法可以查找出某个名称所绑定的Java对象。
  • 在真实的项目应用中,通常是由系统程序或框架程序先将资源对象绑定到JNDI环境中,以后在该系统或框架中运行的模块程序就可以从JNDI环境中查找这些资源对象了。
  • 优点:这种方式极大的增强了系统的可维护性
  • 容器环境Context也是一个Java对象,它也可以通过一个名称绑定到另一个容器环境Context中。这就形成了一种父子级联关系,多个Context对象最终可以级联成一种树状结构,树中的每个Context对象中都可以绑定若干个Java对象。

Tomcat服务器在启动时可以创建一个连接到某种数据库系统的数据源DataSource对象,并将该数据源对象绑定到JNDI环境中,以后在这个Tomcat服务器中运行的Servlet和JSP程序就可以从JNDI环境中查询出这个数据源对象进行使用。

数据源DataSource

  • 概念:连接数据库,创建Connection连接对象。
  • 是数据库对编程提供的一个接口,每个数据源对应一个数据库。
  • 内容:存储了所有建立数据库连接需要的信息。eg:username,pwd等

类似于通过指定文件名称可以在文件系统中找到文件一样,通过提供正确的数据源名称,能找到相应的数据库连接。算是对数据库的一个抽象映射。

连接池

  • 概念:存放数据库连接对象的一个缓冲池,需要数据连接时从缓冲池中取。
  • 作用:管理数据源
  • 操作过程:当一个线程需要用JDBC对一个数据库操作时,将从池中请求一个连接。当这个连接使用完毕后,将返回到连接池中,等待为其他的线程服务。

连接池分类

  • DataSource用来取代DriverManager来获取Connection,获取速度快,同时可以大幅度提高数据库访问速度。
1. DBCP
  • Tomcat内置的连接池(Tomcat Dbcp)
  • apache上的一个 java连接池项目,也是 tomcat使用的连接池组件。单独使用dbcp需要3个包:common-dbcp.jar,common-pool.jar,common-collections.jar
  • 特点:DBCP没有自动的去回收空闲连接的功能。

DBCP配置文件——dbcp.properties

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test?rewriteBatchedStatements=true&useServerPrepStmts=false
username=root
password=abc123
2. C3P0
  • C3P0是一个开源的jdbc连接池,它实现了数据源和JNDI绑定。
  • C3P0是异步操作的,缓慢的jdbc操作通过帮助进程完成。扩展这些操作可以有效的提升性能。目前使用它的开源项目有Hibernate,Spring等。
  • 特点:C3P0有自动回收空闲连接功能。

获取方式

//使用C3P0数据库连接池的配置文件方式,获取数据库的连接:推荐
private static DataSource cpds = new ComboPooledDataSource("helloc3p0");
public static Connection getConnection2() throws SQLException{
	Connection conn = cpds.getConnection();
	return conn;
}

c3p0配置文件——c3p0.properties

<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
	<named-config name="helloc3p0">
		<!-- 获取连接的4个基本信息 -->
		<property name="user">root</property>
		<property name="password">abc123</property>
		<property name="jdbcUrl">jdbc:mysql:///test</property>
		<property name="driverClass">com.mysql.jdbc.Driver</property>
		
		<!-- 涉及到数据库连接池的管理的相关属性的设置 -->
		<!-- 若数据库中连接数不足时, 一次向数据库服务器申请多少个连接 -->
		<property name="acquireIncrement">5</property>
		<!-- 初始化数据库连接池时连接的数量 -->
		<property name="initialPoolSize">5</property>
		<!-- 数据库连接池中的最小的数据库连接数 -->
		<property name="minPoolSize">5</property>
		<!-- 数据库连接池中的最大的数据库连接数 -->
		<property name="maxPoolSize">10</property>
		<!-- C3P0 数据库连接池可以维护的 Statement 的个数 -->
		<property name="maxStatements">20</property>
		<!-- 每个连接同时可以使用的 Statement 对象的个数 -->
		<property name="maxStatementsPerConnection">5</property>

	</named-config>
</c3p0-config>
3.Druid
  • Druid是一个开源项目,源码托管在github上。
  • 阿里巴巴开源平台上一个数据库连接池实现,它结合了C3P0、DBCP、PROXOOL等DB池的优点,同时加入了日志监控,可以很好的监控DB池连接和SQL的执行情况,可以说是针对监控而生的DB连接池,只要在web.xml中或spring的配置文件中加以配置即可。
  • 据说是目前最好的连接池

Druid配置文件——druid.properties

url=jdbc:mysql://localhost:3306/test?rewriteBatchedStatements=true
username=root
password=123456
driverClassName=com.mysql.jdbc.Driver

initialSize=10
maxActive=20
maxWait=1000
filters=wall

总结

数据源连接数据库,创建连接对象。

连接池是用来管理池中的连接对象

连接池就像数据源的代理人,我们需要连接直接找连接池要,不用的连接也是直接还给连接池。

数据源:水管
连接池:水站
数据库:水站源头
JNDI:水站门牌

  • 获取数据时,通过找到JNDI,找到连接池,再找到连接对象和对应的数据库。
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值