再次深入探索datasource问题?

datasource现在几乎每个web框架都会有集成,但是对于数据源的设计原理以及应用上,很少进行深入的研究;实际上数据源也是web框架的核心之一了解一下其内涵还是非常重要的。

数据源(Data Source)顾名思义,数据的来源,是提供某种所需要数据的器件或原始媒体。在数据源中存储了所有建立数据库连接的信息。就像通过指定文件名称可以在文件系统中找到文件一样,通过提供正确的数据源名称,你可以找到相应的数据库连接。

根据这样的定义,那么我们就应该先了解一下数据库连接;数据库连接在各种编程语言都有自己的实现,简单的如JDBC:


public static void main(String[] args) {
Scanner in =new Scanner(System.in);

Connection conn = null;
Statement st = null; // 用于执行SQL语句的对象,当然还有其他的对象也可以用于执行SQL语句

try {

Class.forName("oracle.jdbc.driver.OracleDriver");// 加载数据库驱动包,这里是Oracle的驱动包

conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl","scott","scott");

// url 连接数据库的地址类似的如:

//"jdbc:mysql://localhost/test?user=root&password=root&useUnicode=true&&characterEncoding=gb2312&autoReconnect = true";

//简单写法:url = //"jdbc:myqsl://localhost/test(数据库名)? user=root(用户)&password=root(密码)";


String name = in.next();
String date = in.next();
String sql = "update student set stu_name=‘"+name+"‘,stu_birthday=to_date(‘"+date+"‘,‘yyyy-mm-dd‘) where stu_id=7";
System.out.println(sql);

st = conn.createStatement();

int num = st.executeUpdate(sql);
if(num>0){
System.out.println("修改成功");
}

} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{

try {
if(st!=null)
st.close();

if(conn!=null)
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
System.out.println("程序结束");

}

实际上我们无论使用哪种持久化技术,都需要通过数据连接来访问数据库;而数据连接在大多数web框架中都是通过数据源获得;如spring,既可以通过JNDI获取应用服务器的数据源,也可以直接在Spring容器中配置数据源,此外,你还可以通过代码的方式创建一个数据源,以便进行无依赖的单元测试配置一个数据源。

常见的web框架数据源配置方式都是通过在config文件中配置相应的需要访问的数据库信息,并将配置信息加载到某个数据源中如:HikariDataSource;以及注册相应的数据库驱动等等。当然也有在xml配置文件中配置相应的数据源,并注册所有的相关信息如spring的配置。

通过分析基本可以看出数据源类似一个载体,里面包含我们需要访问某个数据库的连接等等信息;而在各种web框架的实现上都可以看成是JDBC的衍生。

时间: 2024-10-06 01:26:05

再次深入探索datasource问题?的相关文章

作为码农,我们为什么要写作

在程序员这个行业,坚持做技术写作的人一直比较少.我和身边的朋友沟通后,发现他们除了借口没有时间外,大多没有意识到写作带来的收益.在他们看来,将自己学到的知识简单记录下来就足够自己需要的时候回顾了.而技术写作通常需要花更多时间,因为需要将技术的细节以及来龙去脉讲清楚. 不得不承认,这的确是一个事实,通常情况下,把一个知识讲清楚比理解它更难.那我们为什么要花时间写作呢?我想写作至少有以下好处. 提高自己对知识的掌握层次 美国教育心理学家Bloom将知识认知分为了两个维度,其中认知历程维度又分为6个层

DBUtils和连接池

今日内容介绍1.DBUtils2.连接池 ###01DButils工具类的介绍个三个核心类 * A: DButils工具类的介绍个三个核心类 * a: 概述 * DBUtils是java编程中的数据库操作实用工具,小巧简单实用. * DBUtils封装了对JDBC的操作,简化了JDBC操作,可以少写代码. * DBUtils就是JDBC的简化开发工具包.需要项目导入commons-dbutils-1.6.jar才能够正常使用DBUtils工具. * b: Dbutils三个核心功能介绍 * Qu

springboot中加入druid对sql进行监控

springboot作为现在十分流行的框架,简化Spring应用的初始搭建以及开发过程,现在我们就使用springboot来进行简单的web项目搭建并对项目sql进行监控. 项目的搭建就省略了,springboot项目搭建好以后,进行一下操作, 本例子的项目使用 maven 管理的jar 1.加入依赖, 在pom.xml文件 增加配置 <dependency> <groupId>com.alibaba</groupId> <artifactId>druid&

30_数据库_第30天java_jdbc_(DBUtils)_讲义

今日内容介绍 1.DBUtils 2.连接池 01DButils工具类的介绍个三个核心类 * A: DButils工具类的介绍个三个核心类 * a: 概述 * DBUtils是java编程中的数据库操作实用工具,小巧简单实用. * DBUtils封装了对JDBC的操作,简化了JDBC操作,可以少写代码. * DBUtils就是JDBC的简化开发工具包.需要项目导入commons-dbutils-1.6.jar * 才能够正常使用DBUtils工具. * b: Dbutils三个核心功能介绍 *

改造一下jeecg中的部门树

假装有需求 关于 jeecg 提供的部门树,相信很多小伙伴都已经用过了,今天假装有那么一个需求 "部门树弹窗选择默认展开下级部门",带着这个需求再次去探索一下吧. 一.改造之前的部门选择树流程 1.1 t:departSelect标签 代码片段: <t:departSelect selectedNamesInputId="orgNames" selectedIdsInputId="orgIds"></t:departSelect

8.PHP内核探索:再次探讨SAPI

在PHP的生命周期的各个阶段,一些与服务相关的操作都是通过SAPI接口实现. 这些内置实现的物理位置在PHP源码的SAPI目录.这个目录存放了PHP对各个服务器抽象层的代码, 例如命令行程序的实现,Apache的mod_php模块实现以及fastcgi的实现等等. 在各个服务器抽象层之间遵守着相同的约定,这里我们称之为SAPI接口. 每个SAPI实现都是一个_sapi_module_struct结构体变量.(SAPI接口). 在PHP的源码中,当需要调用服务器相关信息时,全部通过SAPI接口中对

探索Oracle之数据库升级二 11.2.0.3升级到11.2.0.4完整步骤

探索Oracle之数据库升级二  11.2.0.3升级到11.2.0.4完整步骤 说明:         这篇文章主要是记录下单实例环境下Oracle 11.2.0.1升级到11.2.0.3的过程,当然RAC的升级是会有所不同.但是他们每个版本之间升级步骤都是差不多的,先升级Database Software,再升级Oracle Instance. Oracle 11.2.0.4的Patchset No:19852360下载需要有Oracle Support才可以.  Patchset包含有7个

SQL SERVER Undelete 可能性探索(一)Clustered Table

SQLSERVER中,如果数据被误删了,依照官方的说法,SQLSERVER是没有undelete的.要想救回被删除的数据,最典型的方法就是透过将备份档还原成另一DB,将数据从另一DB找回来后,再新增回正式的DB. 不过,如果对于SQLSERVER的transaction log结构了解的人,只要交易纪录还在,就可以透过解析交易纪录来取得被删除的数据,再将数据Insert回DB.只是transaction log的解析有点复杂.这也是个值得探讨且有趣的主题.如果可以,或许可以找时间来谈谈这个. 其

Android艺术开发探索第三章————View的事件体系(下)

Android艺术开发探索第三章----View的事件体系(下) 在这里就能学习到很多,主要还是对View的事件分发做一个体系的了解 一.View的事件分发 上篇大致的说了一下View的基础知识和滑动,现在我们再来聊聊一个比较核心的知识点,那就是事件分发了,而且他还是一个难点,我们更加应该掌握,View的滑动冲突一直都是很苦恼的,这里,我们就来一起探索一下 1.点击事件的传递规则 我们分析的点击事件可不是View.OnClickListener,而是我们MotionEvent,即点击事件,关于M